我已经为我的软件创建了一个 Windows 安装程序——它可以在所有 Windows 版本以及 MS SQL 2008 服务器上正常工作。但是,随着 MS SQL 2012 的引入,Windows 安装程序使用的帐户 (SYSTEM_LOCAL) 已默认撤销其“系统管理员”权限,因此我无法直接从安装程序运行 SQL 脚本 - 无需客户在运行安装程序之前添加“sysadmin”角色。
SQL 脚本包含用于构建应用程序数据库、设置 CLR 函数等的 SQL 命令。
在后面的代码中,我使用以下从 C# 执行 SQL 的标准方法:
/// <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 命令的帐户运行这些命令窗口,但是我未能弄清楚他们是怎么做的。
任何提示或帮助将不胜感激。
我很抱歉英语不好。