2

我在云机器上的 Windows 2008 服务器上安装了一个正常工作的 SQL Server 2008 R2 Express。来自多个客户端应用程序的所有类型的连接(ado.net、nhibernate 等)都可以正常工作,但 OLEDB 除外。SQL Native Client 也可以正常工作。

当我尝试从本地服务器连接并作为数据源写入实例名称时,一切正常。但是从外面看,我遇到了问题,或者如果我写 wan ip 或 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 连接编写的,所以我需要它们将数据库与 oledb 提供程序连接起来。

有任何想法吗?

问候, 默特

4

1 回答 1

6

自从有人问这个问题以来已经有一段时间了,但我目前正在解决一个与 OLE DB 和 SQL Server 相关的问题,这听起来可能相关。

我发现,即使服务器使用默认端口 (1433),我仍然必须在 UDL 连接字符串中明确指定它,如下所示:

Provider=SQLOLEDB.1;User ID=USER;Data Source=IP,1433

我问过为什么这里可能需要这样做: 为什么 SQL Server 2008 OLE DB UDL 需要明确指定端口 1433?

也许尝试一下,看看它是否有帮助。

于 2013-08-28T15:33:00.883 回答