繁体   English   中英

在Visual Studio中创建安装文件时,为什么不能连接到SQL Server数据库?

[英]Why can't I connect to the SQL Server database when I create setup file in Visual studio?

我使用C#Windows窗体创建应用程序,该窗体使用本地SQL Server数据库服务器使用以下连接字符串存储/读取数据:

 SqlConnection cn = new SqlConnection("Data Source=localhost;Initial Catalog=mydb;Integrated Security=True");

之后,我创建了一个安装文件(exe),然后将安装文件安装在同一台PC上,该应用程序运行良好,可以从SQL Server数据库中读取数据。

现在,当我转到另一台PC时,出现了问题,我安装了SQL Server,并手动附加了相同的数据库(mydb)并安装了我的应用程序,但它不起作用。 该错误显示在屏幕截图中:

屏幕截图

我在另一台PC上有不同的SQL Server名称,但是我在连接字符串中指定SQL Server为Localhost,所以我不知道为什么它不起作用。 请帮助我如何解决此错误。 谢谢

确保将Sql Server设置为允许Tcp / Ip连接,并且将其设置为允许集成安全性登录。 然后,确保授予该计算机上的用户对数据库的正确访问权限。 如果您希望能够分发此应用程序并使它“正常运行”,那么在此处使用Sql身份验证而不是Windows身份验证可能会更好。

最后,如果此处的Sql Server是要作为典型本地桌面应用程序的简单数据存储,则可能会适得其反。 Full Sql Server(包括Express Edition)是服务器引擎。 当它是机器上唯一运行的东西时,它工作得最好,并且可以用尽机器上的所有资源以缓存数据并处理来自许多远程机器的请求。 如果只想为典型的桌面应用程序提供本地数据存储,则像Sql Server LocalDb,Sql Server Compact Edition,Sqlite甚至MS Access这样的进程内引擎将是更合适的选择。

您需要为另一台计算机上登录的用户设置Windows身份验证。 因为您使用的是Integrated Security,它将尝试使用当前用户的Windows登录名连接到SQL Server。 这将是不同计算机上的不同登录名,因此另一台计算机上的SQL Server需要添加该用户。

您需要启动SQL Server Browser Service 它使您的应用程序连接到SQL Server:

SQL Server浏览器侦听Microsoft SQL Server资源的传入请求,并提供有关计算机上安装的SQL Server实例的信息。

要启用它:

在SQL Server配置管理器中,转到“属性=>服务选项卡=>启动模式=自动”。

要么

这台计算机=>管理=>服务和应用程序=>服务=> SQL Server Broswer

注意:您需要一个特定于sql的用户来连接它,因此不能对每台计算机都使用Integrated Security

创建一个Sql Server用户并允许其访问数据库:

--//Creates the login AbolrousHazem with password '340$Uuxwp7Mcxo7Khy'.
CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
GO

--//Creates a database user for the login created above.
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO

参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM