在生产环境中,我发现必须为“Microsft OLE DB Provider for SQL Server”UDL 显式指定端口 1433。像这样:
Provider=SQLOLEDB.1;User ID=USER;Data Source=IP,1433
没有指定端口,错误是:
Test connection failed because of an error in initializing provider.
[DBNETLIB][ConnectionOpen (Invalid Instance()).]Invalid connection.
相同的环境,但 SQL Native Client 10.1,不需要明确指定 1433:
Provider=SQLNCLI10.1;Integrated Security="";Persist Security Info=False;
User ID=USER;Data Source=IP;...
针对开发 SQL Server 的相同测试,OLE DB UDL不需要指定默认端口。
在什么情况下可能需要明确指定默认端口?
生产系统是集群的,具有主要的主动和次要被动,以及与之建立连接的集群服务器。开发环境只是单一的SQL Server 2008。我不知道有什么其他区别。如果你认为这很重要,为什么这很重要?
客户端到 SQL Server(创建 UDL):Windows Server 2008 R2 Standard MDAC 2.8
所有 SQL 数据库服务器:Microsoft SQL Server 2008 (SP1) - 10.0.2734.0 (X64) Windows Server Enterprise Service Pack 2
提前感谢您的帮助。