从注册表中获取SQL Server实例名称

时间:2015-06-04 10:18:55

标签: sql-server xml wix windows-installer

我正在尝试创建一个数据库并从我的Windows安装程序运行一些SQL脚本,只要我对服务器名称进行硬编码,就可以正常工作。如果我尝试从注册表获取服务器名称,安装程序将失败。在这种情况下,我在64位操作系统上安装了32位SQL Server,因此我使用以下注册表项:

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"pageId"`
}

然后我将此属性插入我的数据库设置:

var keep = document.querySelector('.stuff').innerText
var exclude = document.querySelector('.to_hide').innerText
var result = keep.replace(new RegExp(exclude, 'g'), '')

alert(result)

它会失败。我检查了注册表,唯一的名称/值对有“SQLEXPRESS”,该值不是服务器实例。服务器本身被称为“SQLEXPRESS”,但是如果它被存储为名称,那么我需要提前知道它能够搜索它,从而首先实现它的目的。

我理解为什么这段代码不起作用,但我不知道如何获取服务器名称。我已经读过您可以使用[SQLSERVER]作为SqlDatabase @ Server来获取默认服务器,但是当我尝试使用时,安装程​​序仍然失败。

有没有办法获取服务器名称(不一定使用注册表)?

2 个答案:

答案 0 :(得分:1)

实际上MSSQLSERVER是默认的SQL实例,它是一个保留的关键字,根据this不能在实例名中使用,所以我认为你要找的是SQL实例如果你是,你可以在路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server中找到一个名为InstalledInstances的值,它包含实例名称,如果您使用该代码,则会带来注册表项作为清单。 请记住,如果您有默认的命名实例或命名实例,此路径可以工作,之后您应该从列表中排除MSSQLSERVER

答案 1 :(得分:0)

您可以使用‍ Powershell‍通过以下方法获取服务器中所有已命名的实例:

(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances