2011-09-21 133 views
2

遗留VB6应用程序使用硬编码的连接字符串像SQL Server客户端别名不工作

Provider=SQLOLEDB.1;User ID=USER_NAME;password=USER_PASSWORD;Initial Catalog=DB_NAME;Data Source=OLD_SERVER_NAME;Network Library=DBMSSOCN 

的目标是转发此应用程序的NEW_SERVER_NAME与特定端口。 我创建了别名,但它不工作,应用程序继续使用旧服务器。

但是,如果删除部分Network Library=DBMSSOCN(我在测试应用程序中) 一切工作正常。

有没有机会使它与原始连接字符串一起工作?

+0

你能澄清什么版本的SQL Server您正在使用? – Sumo

+0

旧的是2000,新的是2008企业版(64位) – Mikhail

回答

1

默认的TCP/IP端口是1433,但这是可配置的。这是一个循序渐进的过程(希望)可以解决您面临的问题。 http://msdn.microsoft.com/en-us/library/ms177440.aspx

至于你的别名,你可能会确保你在客户端而不是sql-server上创建它。 (不是说你没有做错任何事,但我有时会看到这样的错误...) http://support.microsoft.com/kb/289573

+0

是的,我在客户端以及x64和x86配置上都这样做了。我只是想知道为什么别名没有连接字符串的“网络库= DBMSSOCN”部分工作,否则不起作用。我无法轻松修改遗留应用程序并删除此部分的问题。我不明白为什么它有这样的效果。别名没有问题。在我的测试应用程序中,我有同样的问题 - 它没有提及的部分,停止使用它。而且很容易重现。 – Mikhail

1

DBMSSOCN是指用于连接network library。在这种情况下,TCP/IP。可以为命名管道,TCP/IP和VIA配置别名。当您删除DBMSSOCN设置时,它将回到命名管道而不是TCP/IP。确保两件事情(在SQL Server配置管理器的32位和64位SQL Native Client配置部分下):

  • 在客户端协议下,确保启用了TCP/IP。

Client Protocols

  • 在别名,请确保您所创建的别名是特定的网络库连接字符串指定。在你的情况下,TCP/IP。

Alias - New Window

您可能需要在应用服务器上安装SQL Native Client的10.0,并更改连接字符串使用该版本的客户端在此之前将工作。要安装新的客户端,你需要从安装SQL Server 2008的新的连接字符串可能看起来像下面安装SQL Server Tools(例如从ConnectionStrings.com标准安全):

Provider=SQLNCLI10;Server=ServerAlias;Database=myDataBase;Uid=myUsername;Pwd=myPassword 
+0

我正在使用“SQL Server客户端网络实用程序”。 TCP/IP已启用,别名正在使用TCP/IP。再次,如果我删除了提到的部分,别名工作正常。进程监视器仅显示TCP/IP连接。 – Mikhail

+0

而且,也许是一个愚蠢的问题,但是你是在应用程序所在的服务器上创建别名还是在数据库服务器上创建别名? – Sumo

+0

在应用程序服务器上。数据库服务器位于不同的框中。 – Mikhail

0

工具Cliconfg.exe可用于在64b计算机上运行时配置客户端别名仅为64b程序创建条目;如果你没有SQL工具,并希望在32个64B程序创建别名创建以下注册表项(以下与TCP别名reg文件的内容):

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo] 
"oldserver\\oldinstance"="DBMSSOCN,newserver\\newinstance" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSSQLServer\Client\ConnectTo] 
"oldserver\\oldinstance"="DBMSSOCN,newserver\\newinstance"