我在云计算机上的Windows 2008服务器上安装了有效的SQL Server 2008 R2 Express。除了OLEDB之外,来自多个客户端应用程序的所有类型的连接(ado.net,nhibernate等)都可以正常工作。 SQL Native Client也可以正常工作。
当我尝试从本地服务器连接并作为数据源写入实例名称时,一切正常。但是从外面来看,我遇到了问题,或者如果我写的是万能或者dns,我也有问题来自当地。
-- works perfect from everywhere
Provider=SQLNCLI10;Data Source=mntek.no-ip.org;User ID=xxx;Password=xxx;
-- does not work from anywhere
Provider=SQLOLEDB.1;Data Source=mntek.no-ip.org;User ID=xxx;Password=xxx;
-- works only from local
Provider=SQLOLEDB.1;Data Source=flz001\sqlexpress;User ID=xxx;Password=xxx;
错误:[DBNETLIB] [ConnectionOpen(Invalid Instance())。无效 连接。
-- works perfect with ado.net
Data Source=mntek.no-ip.org;User ID=xxx;Password=xxx
其他一些客户端应用程序(不是我的)使用oledb连接编写,所以我需要它们将db连接到oledb提供程序。
有什么想法吗?
此致 梅特
答案 0 :(得分:6)
自从被问到这个问题已经有一段时间了,但我目前正在解决与OLE DB和SQL Server相关的问题,听起来可能与此有关。
我发现,即使服务器使用默认端口(1433),我仍然必须在UDL连接字符串中明确指定它,如下所示:
Provider=SQLOLEDB.1;User ID=USER;Data Source=IP,1433
我问过为什么这可能是必要的: Why might SQL Server 2008 OLE DB UDL require port 1433 explicitly specified?
也许尝试一下,看看它是否有帮助。