【问题标题】:How to connect mssql from msi installer through windows authentication如何通过 Windows 身份验证从 msi 安装程序连接 mssql
【发布时间】:2014-09-16 12:45:42
【问题描述】:

我正在尝试通过 Visual Studio 设置项目创建 Web 应用程序设置。应用程序所需的数据库也作为自定义操作安装在设置中。用户未提供任何用户名和密码来连接数据库。设置自定义动作需要通过windows认证连接数据库。但是当它试图连接数据库时,它会抛出一个异常——无法连接数据库。注意:Web 设置正在使用提升的访问权限进行安装。请提供通过网络设置“自定义操作”的 Windows 身份验证连接数据库的解决方案。

【问题讨论】:

    标签: sql-server-2008 windows-installer windows-authentication visual-studio-setup-proje


    【解决方案1】:

    问题很可能是 VS Everyone 安装中的自定义操作使用系统帐户运行,而不是安装用户的帐户。我敢打赌数据库不允许 SYSTEM 对它做任何事情。

    它们作为系统运行,因为这是提升它们所需要的。如果您查看 CustomAction 表的文档:

    http://msdn.microsoft.com/en-us/library/aa368069(v=vs.85).aspx

    VS 生成设置了 msidbCustomActionTypeNoImpersonate 位的那些。其他工具可让您说出是否要模拟(安装用户),但 VS 不会,因此您需要在确定正确的自定义操作后使用像 Orca 这样的 MSI 编辑器来编辑 CustomAction 表。但是它不会升高。从长远来看,如果您需要那种程度的控制,那么您应该寻找另一个设置构建工具。

    【讨论】:

    • 我正在尝试使用 orca 编辑 msi。但无法找到 msidbcustomactiontype 相关设置。在哪个位置我可以找到 msidbcustomactiontype -> impersonate 。如果不存在,我可以将其添加为附加项目吗?
    • 我已将类型列的值从 3073(提升)更改为 1025(模拟登录用户)。 msi 能够通过 windows 身份验证连接数据库。但是我需要在需要管理员权限的自定义操作中执行一些操作。我计划将自定义操作分成两个并模拟一个正在创建数据库的操作。但我需要一个接一个地执行自定义操作。如何在 Visual Studio Web 设置中设置自定义操作的执行顺序?
    • 我认为 CA 是按照您在 IDE 中的自定义操作视图中的顺序执行的。
    • 那么我需要以这样的方式命名它们,它们按字母顺序排列。?
    【解决方案2】:

    您想使用受信任的身份验证。此连接字符串将允许静默登录到 SQL Server:

    Provider=SQLNCLI10;Server=[ServerName OR ServerName\InstanceName];
    Database=myDataBase;Trusted_Connection=yes;
    

    【讨论】:

    • 我已经在使用可信连接 = true 的连接字符串。或者,我也尝试了集成安全 =sspi。两者都没有帮助连接数据库。我怀疑正在执行 msi 安装程序的进程的权限。
    • 执行SQL脚本的进程是不是运行安装程序的用户登录?
    • 安装sql脚本的过程可以使用用户名和密码安装带有连接字符串的脚本。如果我们从任何普通应用程序连接,我用于 Windows 身份验证的连接字符串工作正常。您给出的答案 -sqlncli10 提供者是否有任何意义?我正在使用 sqlprovider
    • 在通过安装程序运行时,您能否运行 SQL Profiler 来验证用于连接 SQL Server 的 AD 登录名?
    猜你喜欢
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多