[英]How can I change the database schema using a Statement.execute() in Java ( and SQL Server)?
我需要以編程方式執行SQL Server系統存儲過程,由於它是在當前架構中執行的,因此我需要即時對其進行更改。
像這樣
語句st = connection.createStatement(); st.execute(“ EXEC SP_ADDUSER'',''”);
但是SP_ADDUSER僅在連接的當前模式集上執行,因此,如果我想在各種模式下創建用戶,則需要對其進行更改,這就是我想要的。
我不認為可以更改連接指向的數據庫。
您可能需要為每個數據庫(架構)創建一個單獨的DataSource / Connection。
EXEC <DatabaseName>..sp_adduser
可以通過連接到任何數據庫(甚至是master
)運行。 連接不會受到影響。
例如,以下內容在我的系統上似乎可以正常工作:
USE master
EXEC sp_addlogin 'test1'
EXEC SandBox..sp_adduser 'test1'
通過客戶端,同樣的事情也可以正常工作。 您的客戶端連接是否改變了您的SQL?
using System;
using System.Data.SqlClient;
namespace TestUse
{
class Program
{
static void Main(string[] args)
{
SqlConnection cn = new SqlConnection("Server=(local);Database=master;Trusted_Connection=True;");
cn.Open();
SqlCommand cmd = new SqlCommand("USE master; EXEC sp_addlogin 'test1'; EXEC SandBox..sp_adduser 'test1'", cn);
cmd.ExecuteNonQuery();
cn.Close();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.