为SQL Server LocalDB创建永久别名

时间:2018-04-09 22:45:58

标签: sql-server alias named-pipes localdb

我正在尝试为Microsoft SQL Server的LocalDB设置别名,但每次我的命名实例实例化时,用于将我创建的别名链接到LocalDB实例的命名管道都会更改。有没有办法为LocalDB的实例设置永久别名?

例如,我从名为“MSSQLLocalDB”的命令行创建了一个LocalDB实例。

sqllocaldb create mssqllocaldb

然后我们开始并询问信息。

sqllocaldb start mssqllocaldb
sqllocaldb info mssqllocaldb

Name:               mssqllocaldb

Version:            11.0.2318.0

Shared name:

Owner:              COOLNEATRADFOLDER\ryguy

Auto-create:        No

State:              Running

Last start time:    4/9/2018 3:46:16 PM

Instance pipe name: np:\\.\pipe\LOCALDB#4329652A3\tsql\query

使用Microsoft的计算机管理工具,我们可以创建一个别名:引用我们使用上一个命令获得的命名管道创建的LocalDB实例。

问题是每次创建数据库实例时都会重命名命名管道,并且似乎不支持TCIP。每次重新启动服务器时(在计算机重新加载,或超时或手动),都必须经过以同样的方式创建别名的繁琐的繁琐步骤。

我研究了使用PowerShell脚本以及这个有用链接的指导:

https://social.msdn.microsoft.com/Forums/azure/en-US/a69366e6-3270-4562-afa4-84b5a08a612b/setup-a-permanent-alias-for-localdb?forum=sqldatabaseengine

但这需要一些黑客攻击,解决方案有点儿错误(你必须直接搞乱注册表)。

是否有更简单的方法为LocalDB实例创建永久别名?

1 个答案:

答案 0 :(得分:1)

这是我为MS SQL LocalDB实例创建永久别名的解决方案。我打电话给我的实例' mssqllocaldb'。 Thios解决方案适用于LocalDB 2012和2016.我正在使用SSMS 2017。

经过多次审核后,我得出的结论是,Microsoft不支持创建连接到LocalDB的永久别名。所以我编写了一个可以轻松运行的powershell脚本。我将它保存在桌面上并在我想要启动数据库时运行它。

第一段代码提升了powershell中的权限,以便此脚本可以破解注册表。

接下来,我们启动数据库并解析为此LocalDB实例创建的命名管道的JSON.parse(JSON.stringify(array))命令。

最后,我们破解了注册表,将别名应用于64位和32位版本。

将文本文件保存为' whatever.ps1'用这个脚本。右键单击并选择' Run With Powershell'每次要启动数据库时。

arr1=['abcdwidets', 'nightly', ..., n];
arr2=[1628, 0378, 6144, ..., n];

我希望你发现这有用!如果我遗漏了任何信息或者您还有其他问题,请与我们联系。