问题标签 [sql-server-2016-localdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
172 浏览

c# - PC离线时有时无法连接到SQLLocalDB

我们正在使用 SQLLocalDB 连接到本地数据库。无需网络访问 - C# 客户端应用程序与 SQLLocalDB 位于同一台计算机上。有时我会收到以下错误(似乎只发生在某些 PC 上):

Microsoft.SqlServer.Management.Common.ConnectionFailureException: Failed to connect to server (localdb)\myserverinstancename. ---> System.Data.SqlClient.SqlException: Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=27888; handshake=0; ---> System.ComponentModel.Win32Exception: The wait operation timed out

奇怪的是,如果 PC 处于离线状态,并且如果连接到任何类型的互联网连接并重试,问题就会消失。但是,在大多数情况下,即使没有连接,连接也能正常工作。

我发现最接近我的问题的是:Connection to SQL Server Works有时

但这是在讨论完整的 SQL Server,而不是 SQLLocalDB,并且该解决方案使用“Sql Server 配置管理器”,它不适用于 SQLLocalDB。

我的问题:

  • SQLLocalDb 是否出于某种原因使用 IPv6/TCP,即使在同一台 PC 上也是如此?
  • 有没有办法更改 SQLLocalDB 的这些设置?
  • 或者这个问题有不同的原因吗?

编辑:在下面一些评论的帮助下,我意识到失败的那一行是它调用数据库创建脚本时。最初的连接尝试似乎有效,但是当我运行我的创建脚本时,它会抛出“无法连接到服务器”。

0 投票
0 回答
30 浏览

sql-server - LocalDB 需要 SQL Server 2016 LocalDB

我使用本地数据库为我的公司编写了一个插件。我现在正处于使用设置将其部署给其他用户的阶段,因此我可以设置先决条件。到目前为止,一切都很好。

我遇到的问题是,由于某种原因,数据库需要安装 SQL Server 2016 LocalDB。其他用户已经拥有 SQL Server 2014 Express LocalDB。在设置的先决条件中,我放置了 2016,但由于某种原因,下载无法正常运行。它在下载时出错(日志文件中的 hresult 2146697203)。我在某处读到 2016 年和 2017 年没有可再发行的 avialabe。所以我在 2019 年尝试了它。这是下载和安装,但我的数据库无法正常工作。出于某种原因,它想要 2016 年。

我的问题:

  • 是否可以将本地数据库更改为 2019 或 2014 Express?
  • 还是我需要另一个 2016 年的引导程序?
  • 还是我缺少/忽略了另一种选择?
0 投票
0 回答
37 浏览

c# - 在 C# 应用程序设置期间 SQL Server 登录失败

我创建了一个 VS 设置项目,在其中添加了一个自定义操作来创建 SQL Server 数据库。我使用了这里的代码https://daoudisamir.com/install-sql-server-database-with-visual-studio-setup/这本身就是 Microsoft Docs 代码的 ac# 改编:https ://docs.microsoft .com/en-us/previous-versions/visualstudio/visual-studio-2010/49b92ztk(v=vs.100)。我做了一点修改——整个连接字符串都在代码中:

这样,我在安装过程中没有使用任何对话,它会在没有用户输入的情况下启动自定义操作。

但是当尝试安装文件时,我每次都会收到“无法连接到服务器 (localdb)\MSSQLLocalDB”错误。有时,我在日志文件中的内部异常消息说“用户'NT AUTHORITY\SYSTEM'登录失败”,有时只是“在建立与SQL Server的连接时发生与网络相关或特定于实例的错误. 找不到服务器”

我知道事实上它不是自定义操作中的代码 - 我将它复制到一个表单并添加了一个通过应用程序本身创建数据库的按钮 - 没问题,没有连接问题,数据库立即创建。

我必须补充一点,以前,我有在应用程序设置期间安装 SQL Server Local DB 的先决条件。结果很悲惨-它阻止了我对服务器的任何访问-我必须卸载所有VS并重新安装,然后才能恢复正常。

在我看来,出于某种原因,它没有使用运行安装文件的默认 Windows 用户,而是出于某种原因切换到不同的用户。是否通过 msi 文件运行代码导致此问题?我该如何解决?已经整整两天了,我阅读了很多主题并没有找到答案。

感谢您的任何帮助。

编辑:LocalDB文档明确指出

由于 Windows 文件系统重定向,内置帐户(例如 NT AUTHORITY\SYSTEM)拥有的 LocalDB 实例可能存在可管理性问题。而是使用普通的 Windows 帐户作为所有者。

但是,我没有选择在SYSTEM下运行。由于某种原因,它会切换到该用户,而在安装后,当应用程序使用相同的连接字符串运行时,它会按预期使用普通的 Windows 用户。

为什么切换到这个用户?这就是我想要弄清楚的。如果重要的话,我有Windows 10。