我正在尝试创建一个数据库并从我的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来获取默认服务器,但是当我尝试使用时,安装程序仍然失败。
有没有办法获取服务器名称(不一定使用注册表)?
答案 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