2010-08-05 104 views
4

我的ASP應用程序連接到安裝了SQL Server 2000的網絡服務器,沒有問題。可運行的舊代碼:從傳統ASP連接到SQL Server 2008的命名實例

myConn.Open ("Driver={SQL Server}; 
       Server=myNetwrkServer; 
       Database=myDB; 
       UID=myID;PWD=myPWD;Trusted_Connection=NO;") 

SQL Server 2008的實例安裝在同一臺網絡服務器上。新代碼不起作用:

myConn.Open ("Driver={SQL Server Native Client 10.0}; 
         Server=myNetwrkServer\SQLServ2008; 
         Database=myDB; 
         UID=myID;PWD=myPWD;Trusted_Connection="NO";) 

請幫忙!

+0

我有從Win2003的服務器ASP經典的大麻煩IP連接到遠程locati使用非默認的SQL端口。想知道SQL2008 express是否需要更新(進入R2)與ASP Classic一起使用,還是這部分的版本相似? – BerggreenDK 2011-05-09 11:50:14

+0

我沒有看到任何單個答案向我展示任何regarind通過WAN/IP連接的非默認SQL端口。所以我仍然不能標記任何人的賞金,因爲我的問題沒有得到解決。 – BerggreenDK 2011-05-15 11:56:50

回答

8

您在行尾附近有不匹配的引號。

應該是這樣的

myConn.Open ("Driver={SQL Server Native Client 10.0}; 
         Server=myNetwrkServer\SQLServ2008; 
         Database=myDB; 
         UID=myID;PWD=myPWD;Trusted_Connection=NO;") 
1

看來你Trusted_Connection參數不當終止的連接字符串。

考慮完全刪除Trusted_Connection或確保不要將NO放在引號中。

myConn.Open ("Driver={SQL Server Native Client 10.0};Server=myNetwrkServer\SQLServ2008; 
       Database=myDB;UID=myID;PWD=myPWD;Trusted_Connection=NO;") 
+0

在...之後仍然缺少報價; – 2010-08-05 19:09:51

2
Trusted_Connection="NO";) 

它看起來像用雙引號周圍存在的價值就扔東西了。

相反的:

("Driver={SQL Server Native Client 10.0};Server=myNetwrkServer\SQLServ2008;Database=myDB;UID=myID;PWD=myPWD;Trusted_Connection="NO";) 

看起來你應該有:

("Driver={SQL Server Native Client 10.0};Server=myNetwrkServer\SQLServ2008;Database=myDB;UID=myID;PWD=myPWD;Trusted_Connection=NO;") 
1

正如其他人所說,報價不匹配。但是,你不應該需要可信連接位。您可以使用UID=PWD=Trusted_Connection=yes。您不需要同時使用所有屬性。

這應該很好地工作:

myConn.Open ("Driver=SQLNCLI10; 
       Server=myNetwrkServer\SQLServ2008; 
       Database=myDB; 
       UID=myID; 
       PWD=myPWD;") 
10

命名實例需要SQL Server Browser Service啓用並啓動。如果此服務未在您的myNetwrkServer機器上啓動,則從網絡連接將失敗,因爲它們無法將實例名稱解析爲實際的偵聽端口。

第二個問題是,您將驅動程序更改爲{SQL Server Native Client 10.0}。這要求您在ASP計算機上安裝SQL Server 2008本機驅動程序。沒有理由更改驅動程序,您應該將驅動程序保留爲舊版本{SQL Server},並讓OleDB爲您解析低級連接驅動程序。通過指定本地驅動程序,甚至是版本號,您都可以指定低級連接堆棧,即使它可以工作,在升級到SQL Server 2008 R2時它也會中斷。只需將其留在通用的{SQL Server}並讓司機經理弄清楚細節。

最後,您需要確保在新服務器上定義了登錄名/密碼。

作爲一般規則,「新代碼不起作用」永遠不應該放在請求幫助的位置。總是把如何它不起作用。你會得到一個異常,或者是一個錯誤?什麼例外,什麼信息?試圖幫助你並不一定是一部神祕的小說。

0

除了Eton B和Remus Rusanu說的之外,還應該檢查在SQL Server上啓用了命名管道協議。檢查(在服務器上):

  1. (在開始菜單程序)
  2. (微軟的SQL Server 2008 /微軟的SQL Server 2008 R2)
  3. SQL Server配置管理器
  4. 展開SQL Server網絡配置
  5. (Select Protocols for)。這將列出協議以及它們是否已啓用。

如果命名管道未啓用,請右鍵單擊屬性,將Enabled更改爲Yes

另一種選擇是強制tcp(顯然使用與上述相似的步驟來驗證tcp是否啓用)。

myConn.Open ("Driver={SQL Server}; 
       Server=tcp:myNetwrkServer; 
       Database=myDB; 
       UID=myID;PWD=myPWD;Trusted_Connection=NO;") 

如果強制TCP,還注意到,在默認情況下你的應用程序訪問數據庫端口1433,這意味着端口:讓您tcp:前綴您的服務器名稱您可以通過更改您的連接字符串迫使TCP需要在服務器上打開,如果該服務器正在運行防火牆。

1

這是清單我經過時,一個新的SQL Server的連接從任何網絡應用程序出現故障(一些點已經提及):

  1. 檢查是否SQL Server有SQL和Windows認證啓用(默認安裝選項僅在Windows身份驗證)
  2. 檢查是否SQL Server Browser服務啓用並運行(默認的安裝選項不交流tivated)
  3. 檢查TCP/IP連接爲您的SQL Server實例已啓用(默認通常是禁用的)
  4. 檢查是否服務器防火牆允許對SQL Server和SQL Server瀏覽器連接(新,這往往是一個問題)
  5. 檢查您的數據庫中定義的數據庫用戶具有相同的登錄憑證
  6. 新的SQL Server上也存在
  7. 檢查是否數據庫用戶有根據訪問權限您的數據庫,如果你從另一臺服務器移動數據庫到新的一個
  8. 最後但並非最不重要的,請檢查您應用程序數據庫配置如果真的這樣做你所期望的(這可能應該先找)
相關問題