我的计算机上有一个运行在 SQL Server Express 2014 上的数据库,我希望连接到我的网络的其他计算机能够使用我编写的 C# 程序连接到它。
我做了以下事情:
1.关闭windows防火墙。我知道我不需要完全这样做,但我只是在调试。
2. 在运行实例的机器上的 SQL Server 配置管理器中启用 TCP/IP。
我无法为所有机器更改此设置。在我尝试连接的计算机上,而不是托管数据库的计算机上,我无法启用此功能。我不确定这是否是一个问题。但是,在我的机器上,我几乎启用了所有功能并重新启动了所有功能。
3.允许远程连接
使用一个.UDL
文件来测试连接,我发现在我的电脑上,如果我选择MyComputerName
作为服务器,我没有看到我的数据库被列出来。但是如果我输入MyComputerName\SQLEXPRESS
,我会看到数据库并且可以使用集成的 Windows 安全性连接到它。
但是如果我登录另一台计算机并使用a.UDL
来测试连接。如果我作为服务器输入,我可以连接MyComputerName
,但如果我尝试MyComputerName\SQLEXPRESS
作为服务器输入,它会非常努力但随后告诉我
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或访问被拒绝。
同样,在我的计算机上使用以下连接字符串工作
Server=MyMachine\SQLEXPRESS;Database=MyDatabase;Integrated Security=True;
Server=MyMachine\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;
但是在网络上的另一台计算机上,我得到了错误
建立与 SQL Server 的连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)
但我知道服务器允许远程连接并且实例名称正在运行,所以我被卡住了。关于从这里去哪里的任何想法?
我找到了解决办法。也许有人可以对此进行扩展,因为我并不完全理解它。
当我像
MyMachineName\SQLEXPRESS
往常一样打开 Management Studio 并将数据库附加到那里时,我无法通过MyMachineName\SQLEXPRESS
连接字符串访问它。但是,当我重新打开 Managment Studio 时
MyMachineName
,将数据库附加到那里,并\SQLEXPRESS
从我的连接字符串中删除,我现在可以访问它了。问题解决了。