2014-04-27 96 views
0

上不工作我有2臺電腦試圖通過寫在傳統的ASP訪問遠程SQL服務器的特定計算機

兩臺計算機的一段代碼來訪問遠程SQL服務器是在同一個局域網(爲此 - 同一個外部IP地址)

在計算機A(其已安裝的Windows 7) - 連接工作正常,而在計算機B(與Windows 8) - 我收到以下錯誤:

Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. 

兩者都試圖從本地IIS中運行腳本使用默認默認網站應用程序池

我試圖使32位應用程序,以在64位操作系統上運行 - 沒有工作

我試圖運行的代碼很簡單,只要:

<%@ language="vbscript" codepage="65001" %> 
<% 
session.CodePage = 65001 

dim ServerName , sqlUser, sqlPasw, sqlDBName, Conn 

ServerName = "SERVER IP" 
sqlUser  = "USER" 
sqlPasw  = "PASSWPRD" 
sqlDBName = "DBNAME" 


Set Conn = Server.CreateObject("ADODB.Connection") 

Conn.Open "Driver={SQL Server};Server=" & Cstr(ServerName) & " ;Uid=" & Cstr(sqlUser) & ";Pwd=" & Cstr(sqlPasw) & ";Database=" & Cstr(sqlDBName) 
Conn.Close 

Set Conn = Nothing 

%> 
+0

您有試過OLEDB連接如字符串,而不是ODBC。看到這裏的例子 - http://www.connectionstrings.com/sql-server/ – John

回答

1

最後我發現這個問題,這是荒謬的

的問題在這裏的額外空間(在連接字符串的Uid部分前):

Conn.Open "Driver={SQL Server};Server=" & Cstr(ServerName) & " ;Uid=" & Cstr(sqlUser) & ";Pwd=" & Cstr(sqlPasw) & ";Database=" & Cstr(sqlDBName) 

我不知道這是爲什麼工作在Windows 7,而不是Windows 8的 - 但發生了什麼

(據Microsoft's documentation - 尾隨開放空格應該被忽略 - 因此,正確的行爲是工作的一個)

如果有人知道這是爲什麼 - 這將是很好知道

感謝

0

檢查Windows 8上的防火牆配置。我必須在Win8上禁用它(防火牆),因爲沒有配置更改有助於SQL通過。

+0

你有沒有嘗試創建一個例外的sqlserv.exe,無論是在內部和外部?完全禁用防火牆似乎有點過於激烈。 – dean

+1

我做了,這是唯一的解決方案。考慮到它在Win7上工作,並突然停止在Win8上工作的事實,我認爲在Win8中存在一個問題,微軟可以很好地意識到這一點。無論如何對於商業網絡上的計算機,它不應該是一個問題,我們終究受多層安全保護 – AlekseyF

+0

我忘了提及,我在該端口上的telnet連接... 任何方式 - 我發現了這個問題,我會發布答案 謝謝! –

相關問題