2

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

当我尝试从服务器本地连接并作为数据源写入实例名称时,一切正常。但是从外面看,我遇到了问题,或者如果我写入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; 

Error: [DBNETLIB][ConnectionOpen (Invalid Instance()).Invalid connection.

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

一些其他的客户端应用程序(不是我)与OLEDB连接写的,所以我需要他们来连接与OLEDB提供商的分贝。

任何想法?

问候, 梅特

+0

您是否尝试使用IP而不是名称?也尝试添加'; Network = DBMSSOCN'到连接字符串?我也很困惑 - 这是一个命名实例('\ sqlexpress')还是一个默认实例?你的连接字符串是相互矛盾的。 – 2012-02-21 14:12:14

+0

嗨亚伦,我也试过IP和添加网络属性,但仍然无法正常工作。在属性 - 名称在管理工作室中写入FLZ001 \ SQLEXPRESS,所以我猜它是一个命名实例(由客户安装)。我尝试了连接字符串的所有可能性,以便它们可能相互矛盾。 – mece 2012-03-12 15:26:09

回答

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?

也许试试看看是否有帮助。

+1

为什么downvote?显式地将端口添加到连接字符串可能是一个解决方案。 – incandenza 2013-08-29 21:19:13

+0

这解决了我无法从VBA连接到外部SQL Server数据库时的问题。谢谢! – lennartk 2014-12-03 15:11:39