微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 InstanceName 连接到 SQL Server LocalDB,但命名管道有效 (.NET/SQL Server 15)

如何解决无法使用 InstanceName 连接到 SQL Server LocalDB,但命名管道有效 (.NET/SQL Server 15)

在我用 VB.NET 开发的应用程序中,我使用了 sql Server LocalDB。如果用户计算机上不存在 sql Server,该应用会下载并安装 sql Server,如果没有运行至少 v14 的 sql Server,它会创建一个本地实例。

在我的开发机器上运行良好。每次打开应用程序时,我都会使用此连接字符串测试连接:

Data Source=(LocalDB)\MSsqlLocalDB15;Integrated Security=True;Connect Timeout=30

但是,当我在运行 Windows 10 全新副本的虚拟机上测试该应用程序时,该应用程序无法使用实例名称 (MSsqlLocalDB15) 进行连接。我试过使用“。”在 servername 中,省略服务器名称,在 servername 中省略 localhost。它确实使用命名管道工作。但是,每次实例停止和启动时都会发生变化 - 我不想在超过 60 秒超时后发现命名管道名称发生变化。

我发现了一个似乎是同一个问题的问题:Can't connect to Localdb but can using namedpipe

但是,我没有像作者那样在事件查看器中看到任何错误。此外,当我知道让实例终止在我的开发机器上正常工作时,我犹豫是否将超时更改为无限期。我希望用户可能会在一夜之间离开应用程序,如果他们不专注于我的应用程序,我不想导致性能问题。 (我也不知道如何实施该答案中的建议,尽管这对我来说是次要的)

我的开发计算机和虚拟机之间有什么区别?我的开发计算机上安装了 Visual Studio 2019 和 sql Server Express - 其中一个可以安装帮助我连接到 LocalDB 的东西吗?

补充:这是来自我的测试机器。可以看到莫名其妙地“没有创建”MSsqlLocalDB,MSsqlLocalDB15运行正常。我确实有一个线索表明我的开发机器和我的测试机器之间的区别在于开发用户管理员而测试用户不是。

enter image description here

解决方法

尝试使用“MSSQLLocalDB”作为实例名称而不是“MSSQLLocalDB15”。 MSSQLLocalDb 是在 LocalDb 安装过程中自动创建的标准实例。如果您想使用“MSSQLLocalDB15”,您必须使用

手动创建它
sqllocaldb c MSSQLLocalDB15

在命令行。 你也可以使用

sqllocaldb v

要检查当前存在哪些 LocalDb 实例...我想您的开发机器上有 MSSQLLocalDB15,但测试虚拟机上没有。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。