二、應用程式連接失敗
以上的三種錯誤資訊都是發生在 sql server 自帶的客戶端工具中,在應用程式中我們也會遇到類似的錯誤資訊,例如:
microsoft ole db provider for sql server (0x80004005)
[dbnetlib][connectionopen (connect()).]specified sql server not found.
microsoft ole db provider for sql server (0x80004005)
用戶 'sa' 登錄失敗。原因: 未與信任 sql server 連接相關聯。
microsoft ole db provider for odbc drivers 錯誤 '80004005'.
[microsoft][odbc sql server driver]超時已過期.
首先,讓我們來詳細看以下的示意圖來了解一下使用 odbc 和使用 ole db 連接 sql server 有什麼不同之處。
從上圖中,我們可以看出在實際使用中,應用程式創建和使用各種 ado 對象,ado 對象框架調用享用的 ole db 提供者。為了訪問 sql server 數據庫,ole db 提供了兩種不同的方法:用於 sql server 的 ole db 提供者以及用於 odbc 的 ole db 提供者。這兩種不同的方法對應於兩種不同的連接字符串,標準的連接字符串寫法如下所示:
1、使用用於 sql server 的 ole db 提供者:
使用 sql server 身份驗證:
oconn.open "provider=sqloledb;" & _
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword"
使用 windows 身份驗證(信任連接):
oconn.open "provider=sqloledb;" & _
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"integrated security=sspi"
2、使用用於 odbc 的 ole db 提供者(不使用 odbc 數據源):
使用 sql server 身份驗證:
oconn.open "driver={sql server};" & _
"server=myservername;" & _
"database=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword"
使用 windows 身份驗證(信任連接):
oconn.open "driver={sql server};" & _
"server=myservername;" & _
"database=mydatabasename;" & _
"trusted_connection=yes"
3、使用用於 odbc 的 ole db 提供者(使用 odbc 數據源):
oconn.open "dsn=mysystemdsn;" & _
"uid=myusername;" & _
"pwd=mypassword"
如果遇到連接失敗的情況,我們只要按照一中所示的方法,結合程式中的連接字符串進行檢查,基本都能得到解決。另外,還有以下幾個要注意的地方:
1、配置 odbc 數據源時,點擊"客戶端"配置選項可以讓我們指定連接使用的網路庫、端口號等屬性,如下圖所示:
2、如果遇到連接超時的錯誤,我們可以在程式中修改 connection 對象的超時設置,再打開該連接。例如:
<% set conn = server.createobject("adodb.connection") dsntest="driver={sql server};server=servername;uid=user;pwd=password;database=mydatabase" conn. properties("connect timeout") = 15 '以秒為單位 conn.open dsntest %> |
dim cn as new adodb.connection dim rs as adodb.recordset . . . cmd1 = txtquery.text set rs = new adodb.recordset rs.properties("command time out") = 300 '同樣以秒為單位,如果設置為 0 表示無限制 rs.open cmd1, cn rs.movefirst . . . |
新闻热点
疑难解答