好吧,事情是这样的:
我正在使用 VPN 连接到 Windows 2003 Server。此服务器上有一个远程 SQL Server 2005 Express 引擎。
我可以使用 Visual Studio 2008 连接到数据库。
但是我无法使用 SQL Server 2005 Management Studio(标准版)连接到同一个数据库。
我已检查了连接信息一百遍,但仍然没有结果。
一个想法:VS 和 SSMS 是否使用相同的 SQL 提供程序?
注意:我运行的是 Windows 7 RC。在 Vista 下使用相同的配置完全没有问题。
答案1
我假设您记得包含实例名称 (server\SQLEXPRESS)?
尝试针对同一服务器创建 ODBC。如果出现相同错误,请创建另一个 ODBC,但使用常规“SQL Server”驱动程序,并在“客户端配置”设置中选择“命名管道”。
此外,SQLChickens 关于确保服务器上启动的 SQL 浏览器的提示是有效的。
另外,尝试使用 IP 地址而不是 NetBios 名称。
答案2
如果它是 SQL Express 引擎,您需要确保 SQL Browser 服务正在运行,否则客户端将无法看到服务器端的命名实例。
答案3
MSDN 上的这篇文章有很多其他链接和清单可以帮助解决这个问题:
摘自帖子:
造成这一现象的原因有很多,大致可以分为五类:
- 连接字符串不正确,例如使用 SqlExpress。
- SQL 实例上未启用 NP。
- 未启用远程连接。
- 服务器未启动,或者连接字符串中指向的不是真正的服务器。
- 其他原因,例如安全上下文不正确。
摘要清单:
- 您的目标服务器启动了吗?
- 您的目标服务器是否正在监听 NP?哪个管道?
- 您的客户端启用了 NP 了吗?使用与服务器相同的管道进行连接?
- 您正在建立本地连接吗?如果是,实例是什么?默认实例还是远程实例?
- 您是否在连接字符串中输入了正确的实例名称?请记住,Sqlexpress 是一个命名实例。
- 您是否启用了远程连接?防火墙?IPSec?“文件和打印机共享”打开了吗?可以访问服务器吗?
- 您能使用或 \ 建立基本连接吗?请使用 sqlcmd 或 osql。
- 您的重现步骤是什么?发生此错误时您的客户端应用程序在做什么?哪个数据库操作,详细一点?
答案4
我验证了在我的情况下(使用几乎相同的问题陈述),服务器没有问题,我可以通过禁用 Windows 7 防火墙的公共配置文件来访问它。 (我还可以访问另一个 SQL Server 2005 服务器,而不是在我的 VPN 上,所以这显然是我这边的问题,但也与服务器的配置有某种交互。)
入站规则有 2 对针对 SQL Server Management Studio 的规则,允许任何 UDP 和任何 TCP 端口,用于“私有”和“域”配置文件,程序 SqlWb.exe。这些均未启用。
我更改了一对规则以适用于所有三个配置文件(公共、私人、域),启用它们,然后我就可以连接了。