2011-09-21 93 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"