二、應用程式連接失敗
以上的三種錯誤資訊都是發生在 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 . . . |
新闻热点
疑难解答