我爲我的軟件創建了一個Windows安裝程序,它可以在所有Windows版本上與MS SQL 2008服務器結合使用。但是,隨着MS SQL 2012的推出,Windows Installer正在使用的帳戶(SYSTEM_LOCAL)默認已取消其「sysadmin」權限,因此無法直接從安裝程序運行SQL腳本 - 而無需客戶在運行安裝程序之前添加「sysadmin」角色。從MS SQL 2012上的Windows Installer運行SQL腳本
SQL腳本包含用於構建應用程序數據庫,設置CLR函數等的SQL命令。
在後面的代碼,我使用執行SQL下列標準方法從C#:
/// <summary>
/// Execute the sql script from file
/// </summary>
/// <param name="serverName"></param>
/// <param name="user"></param>
/// <param name="password"></param>
/// <param name="dbName"></param>
/// <param name="Sql"></param>
private void ExecuteSql(string serverName, string user, string password, string dbName, string Sql)
{
string connStr;
string userName = user.Trim();
// Check if Integrated security is used
if (userName == "")
{
// Use integrated security
connStr = "Data Source=" + serverName + ";Initial Catalog=" + dbName + ";Integrated Security=True";
}
else
{
// Use username and password
connStr = "Data Source=" + serverName + ";Initial Catalog=" + dbName + ";Integrated Security=False;User Id=" + user + ";Password=" + password;
}
using (SqlConnection conn = new SqlConnection(connStr))
{
try
{
Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(Sql);
Log("Succeeded");
}
catch (Exception ex)
{
Log(ex.ToString());
}
}
}
我想知道是否有運行從安裝我的SQL代碼,在MS使用的帳戶的某種其它方式SQL 2012具有足夠的權限來運行SQL命令。我查看了一些似乎在命令窗口中執行SQL的安裝程序,並且很可能使用允許SQL命令在SQL服務器上運行的帳戶運行這些命令窗口,但是我沒有弄清楚他們是如何做的。
任何提示,或幫助,將不勝感激讚賞。
對不起英文不好。