在生产环境中,我发现必须为"用于SQL Server的Microsft OLE DB提供程序"UDL明确指定端口1433.像这样:
Provider=SQLOLEDB.1;User ID=USER;Data Source=IP,1433
Run Code Online (Sandbox Code Playgroud)
如果未指定端口,则错误为:
Test connection failed because of an error in initializing provider.
[DBNETLIB][ConnectionOpen (Invalid Instance()).]Invalid connection.
Run Code Online (Sandbox Code Playgroud)
相同的环境,但SQL Native Client 10.1,不需要明确指定1433:
Provider=SQLNCLI10.1;Integrated Security="";Persist Security Info=False;
User ID=USER;Data Source=IP;...
Run Code Online (Sandbox Code Playgroud)
针对开发的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
在此先感谢您的帮助.