【问题标题】:Run SQL Scripts from Windows Installer on MS SQL 2012在 MS SQL 2012 上从 Windows 安装程序运行 SQL 脚本
【发布时间】:2013-09-27 08:37:20
【问题描述】:

我为我的软件创建了一个 Windows 安装程序 - 结合 MS SQL 2008 服务器,它可以在所有 Windows 版本上正常工作。但是,随着 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 命令的帐户运行这些命令窗口,但是我未能弄清楚他们是怎么做的。

任何提示或帮助将不胜感激。

我很抱歉英语不好。

【问题讨论】:

    标签: c# windows-installer sql-server-2012


    【解决方案1】:

    我会考虑使用 Windows Installer XML (WiX) 或 InstallShield 来创作您的 MSI。两者都有 Windows Installer 的模式/扩展,以便于针对连接执行 SQL 脚本,而无需重新发明轮子。

    SqlDatabase Element (Sql Extension)

    SQL Scripts View

    编写速度最快、质量最高的安装程序是那些专注于需要完成的工作而不是如何完成的安装程序。框架应该提供繁重的工作,以提高可靠性和共同的用户体验。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多