Sql server 从注册表中获取SQL Server实例名称
我正在尝试从我的Windows安装程序创建一个数据库并运行一些SQL脚本,只要我硬编码服务器名称,这些脚本就可以正常工作。如果我试图从注册表中获取服务器名称,安装程序将失败。在本例中,我在64位操作系统上安装了32位SQL Server,因此我使用以下注册表项:Sql server 从注册表中获取SQL Server实例名称,sql-server,xml,wix,windows-installer,Sql Server,Xml,Wix,Windows Installer,我正在尝试从我的Windows安装程序创建一个数据库并运行一些SQL脚本,只要我硬编码服务器名称,这些脚本就可以正常工作。如果我试图从注册表中获取服务器名称,安装程序将失败。在本例中,我在64位操作系统上安装了32位SQL Server,因此我使用以下注册表项: <Property Id="SQL_SERVER_INSTANCE"> <RegistrySearch Id="rs_ServerInstance" Type="director
<Property Id="SQL_SERVER_INSTANCE">
<RegistrySearch Id="rs_ServerInstance"
Type="directory"
Root="HKLM"
Key="Software\Wow6432Node\Microsoft\Microsoft SQL Server\Instance Names\SQL"
Name="SQLEXPRESS" />
</Property>
然后将此属性插入数据库设置:
<sql:SqlDatabase Id="NewSQLDB" Database="wix_test_DB" User="Users" Server="[SQL_SERVER_INSTANCE]"
CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" >
<sql:SqlScript ..."/>
</sql:SqlDatabase>
实际上,MSSQLSERVER
是默认的SQL实例,根据,它是一个保留关键字,不能在实例名称中使用,所以我想您要查找的是SQL实例,如果是,您可以在路径HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server
中找到一个名为InstalledInstances
的值,它包含实例名,如果使用该代码,注册表项将作为列表显示。
请记住,如果您有默认的命名实例或命名实例,则此路径有效,之后您应将MSSQLSERVER
从列表中排除您可以使用以下命令获取服务器中的所有命名实例<代码>Powershell代码>:
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances
我认为SQLEXPRESS
不是SQL Server的实例名,它之所以存在是因为安装了Visual Studio等软件。默认实例名是MSSQLSERVER
,请进一步检查;)。实例名称为SQLEXPRESS
。我用这个名字创造了它。我认为我正在使用的注册表路径中列出的实例可能只供人使用。你发布的链接看起来很有希望,谢谢!