0

我创建了一个 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)。我做了一点修改——整个连接字符串都在代码中:

string connStr = "Data Source = (localdb)\\MSSQLLocalDB; Initial Catalog = master; Integrated Security=True";

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

但是当尝试安装文件时,我每次都会收到“无法连接到服务器 (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。

4

0 回答 0