【问题标题】:SQL Server 2008 OLE DB CONNECTION FAILS FROM OUTSIDESQL Server 2008 OLE DB 连接从外部失败
【发布时间】:2012-03-11 18:57:59
【问题描述】:

我在云计算机上的 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()).Invalid 连接。

-- works perfect with ado.net
Data Source=mntek.no-ip.org;User ID=xxx;Password=xxx

其他一些客户端应用程序(不是我的)是使用 oledb 连接编写的,因此我需要它们将数据库与 oledb 提供程序连接。

有什么想法吗?

问候, 默特

【问题讨论】:

  • 你试过用IP代替名字吗?也尝试将;Network=DBMSSOCN 添加到连接字符串?我也很困惑 - 这是命名实例 (\sqlexpress) 还是默认实例?您的连接字符串相互矛盾。
  • 嗨 Aaron,我也尝试过 IP 和添加网络属性,但仍然无法正常工作。在 Properties - Name 在 management studio 中写入 FLZ001\SQLEXPRESS 所以我猜它是一个命名实例(由客户安装)。我尝试了连接字符串的所有可能性,因此它们可能相互矛盾。

标签: connection oledb sql-server-express sql-server-2008r2-express


【解决方案1】:

这个问题已经有一段时间了,但我目前正在解决一个与 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?

也许试试看是否有帮助。

【讨论】:

  • 为什么要投反对票?将端口显式添加到连接字符串可能是一种解决方案。
  • 这解决了我无法从 VBA 连接到外部 SQL Server DB 的问题。谢谢!
猜你喜欢
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 2019-03-19
  • 2019-11-09
  • 1970-01-01
  • 2011-08-15
相关资源
最近更新 更多