亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發(fā)消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術(shù)支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

SQL Server連接失敗錯誤的解決

添加時間:2014-5-18 6:55:06  添加: 思海網(wǎng)絡(luò) 
    在使用 SQL Server 的過程中,用戶遇到的最多的問題莫過于連接失敗了。一般而言,有以下兩種連接 SQL Server 的方式:
    一是利用 SQL Server 自帶的客戶端工具,如企業(yè)管理器、查詢分析器、事務(wù)探查器等。 
    二是利用用戶自己開發(fā)的客戶端程序,如ASP 腳本、VB程序等,客戶端程序中又是利用 ODBC 或者 OLE DB 等連接 SQL Server。下面,我們將就這兩種連接方式,具體談?wù)勅绾蝸斫鉀Q連接失敗的問題。

    一、客戶端工具連接失敗
    在使用 SQL Server 自帶的客戶端工具(以企業(yè)管理器為例)連接 SQL Server時,最常見的錯誤有如下一些:

1、SQL Server 不存在或訪問被拒絕
ConnectionOpen (Connect())
2、用戶'sa'登錄失敗。原因:未與信任 SQL Server 連接相關(guān)聯(lián) 
3、超時已過期 
下面我們依次介紹如何來解決這三個最常見的連接錯誤。

第一個錯誤"SQL Server 不存在或訪問被拒絕"通常是最復(fù)雜的,錯誤發(fā)生的原因比較多,需要檢查的方面也比較多。一般說來,有以下幾種可能性:

1、SQL Server名稱或IP地址拼寫有誤;

2、服務(wù)器端網(wǎng)絡(luò)配置有誤;

3、客戶端網(wǎng)絡(luò)配置有誤。

要解決這個問題,我們一般要遵循以下的步驟來一步步找出導(dǎo)致錯誤的原因。

首先,檢查網(wǎng)絡(luò)物理連接:

   ping <服務(wù)器IP地址> 
 
  或者

   ping <服務(wù)器名稱>
 

如果 ping <服務(wù)器IP地址> 失敗,說明物理連接有問題,這時候要檢查硬件設(shè)備,如網(wǎng)卡、HUB、路由器等。還有一種可能是由于客戶端和服務(wù)器之間安裝有防火墻軟件造成的,比如 ISA Server。

防火墻軟件可能會屏蔽對 ping、telnet 等的響應(yīng),因此在檢查連接問題的時候,我們要先把防火墻軟件暫時關(guān)閉,或者打開所有被封閉的端口。

如果ping <服務(wù)器IP地址> 成功而 ping <服務(wù)器名稱> 失敗,則說明名字解析有問題,這時候要檢查 DNS 服務(wù)是否正常。

有時候客戶端和服務(wù)器不在同一個局域網(wǎng)里面,這時候很可能無法直接使用服務(wù)器名稱來標(biāo)識該服務(wù)器,這時候我們可以使用HOSTS文件來進(jìn)行名字解析,具體的方法是:

1、使用記事本打開HOSTS文件(一般情況下位于C:\WINNT\system32\drivers\etc)。

2、添加一條IP地址與服務(wù)器名稱的對應(yīng)記錄,如:

    172.168.10.24 myserver
 

也可以在 SQL Server 的客戶端網(wǎng)絡(luò)實用工具里面進(jìn)行配置,后面會有詳細(xì)說明。

其次,使用 telnet 命令檢查SQL Server服務(wù)器工作狀態(tài):

   telnet <服務(wù)器IP地址> 1433
 

如果命令執(zhí)行成功,可以看到屏幕一閃之后光標(biāo)在左上角不停閃動,這說明 SQL Server 服務(wù)器工作正常,并且正在監(jiān)聽1433端口的 TCP/IP 連接;如果命令返回"無法打開連接"的錯誤信息,則說明服務(wù)器端沒有啟動 SQL Server 服務(wù),也可能服務(wù)器端沒啟用 TCP/IP 協(xié)議,或者服務(wù)器端沒有在 SQL Server 默認(rèn)的端口1433上監(jiān)聽。

接著,我們要到服務(wù)器上檢查服務(wù)器端的網(wǎng)絡(luò)配置,檢查是否啟用了命名管道,是否啟用了 TCP/IP 協(xié)議等等。我們可以利用 SQL Server 自帶的服務(wù)器網(wǎng)絡(luò)使用工具來進(jìn)行檢查。

點擊:程序 -> Microsoft SQL Server -> 服務(wù)器網(wǎng)絡(luò)使用工具。

從這里我們可以看到服務(wù)器啟用了哪些協(xié)議。一般而言,我們啟用命名管道以及 TCP/IP 協(xié)議。

點中 TCP/IP 協(xié)議,選擇"屬性",我們可以來檢查 SQK Server 服務(wù)默認(rèn)端口的設(shè)置

一般而言,我們使用 SQL Server 默認(rèn)的1433端口。如果選中"隱藏服務(wù)器",則意味著客戶端無法通過枚舉服務(wù)器來看到這臺服務(wù)器,起到了保護(hù)的作用,但不影響連接。

檢查完了服務(wù)器端的網(wǎng)絡(luò)配置,接下來我們要到客戶端檢查客戶端的網(wǎng)絡(luò)配置。我們同樣可以利用 SQL Server 自帶的客戶端網(wǎng)絡(luò)使用工具來進(jìn)行檢查,所不同的是這次是在客戶端來運(yùn)行這個工具。

點擊:程序 -> Microsoft SQL Server -> 客戶端網(wǎng)絡(luò)使用工具

從這里我們可以看到客戶端啟用了哪些協(xié)議。一般而言,我們同樣需要啟用命名管道以及 TCP/IP 協(xié)議。

點擊 TCP/IP 協(xié)議,選擇"屬性",可以檢查客戶端默認(rèn)連接端口的設(shè)置,該端口必須與服務(wù)器一致。

單擊"別名"選項卡,還可以為服務(wù)器配置別名。服務(wù)器的別名是用來連接的名稱,連接參數(shù)中的服務(wù)器是真正的服務(wù)器名稱,兩者可以相同或不同。我們可以使用myserver來代替真正的服務(wù)器名稱sql2kcn-02,并且使用網(wǎng)絡(luò)庫 Named Pipes。別名的設(shè)置與使用HOSTS文件有相似之處。

通過以上幾個方面的檢查,錯誤 1 發(fā)生的原因基本上可以被排除。下面我們再詳細(xì)描述如何來解決錯誤 2。

當(dāng)用戶嘗試在查詢分析器里面使用sa來連接SQL Server,或者在企業(yè)管理器里面使用sa來新建一個SQL Server注冊時,經(jīng)常會遇到如圖 2 所示的錯誤信息。

該錯誤產(chǎn)生的原因是由于SQL Server使用了"僅 Windows"的身份驗證方式,因此用戶無法使用SQL Server的登錄帳戶(如 sa )進(jìn)行連接。解決方法如下所示:

1、 在服務(wù)器端使用企業(yè)管理器,并且選擇"使用 Windows 身份驗證"連接上 SQL Server;

2、 展開"SQL Server組",鼠標(biāo)右鍵點擊SQL Server服務(wù)器的名稱,選擇"屬性",再選擇"安全性"選項卡;

3、 在"身份驗證"下,選擇"SQL Server和 Windows ";

4、 重新啟動SQL Server服務(wù)。

在以上解決方法中,如果在第 1 步中使用"使用 Windows 身份驗證"連接 SQL Server 失敗,那么我們將遇到一個兩難的境地:首先,服務(wù)器只允許了 Windows 的身份驗證;其次,即使使用了 Windows 身份驗證仍然無法連接上服務(wù)器。

這種情形被形象地稱之為"自己把自己鎖在了門外",因為無論用何種方式,用戶均無法使用進(jìn)行連接。實際上,我們可以通過修改一個注冊表鍵值來將身份驗證方式改為 SQL Server 和 Windows 混合驗證,步驟如下所示:

1、點擊"開始"-"運(yùn)行",輸入regedit,回車進(jìn)入注冊表編輯器;

2、依次展開注冊表項,瀏覽到以下注冊表鍵:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
 

3、在屏幕右方找到名稱"LoginMode",雙擊編輯雙字節(jié)值;

4、將原值從1改為2,點擊"確定";

5、關(guān)閉注冊表編輯器;

6、重新啟動SQL Server服務(wù)。

此時,用戶可以成功地使用sa在企業(yè)管理器中新建SQL Server注冊,但是仍然無法使用Windows身份驗證模式來連接SQL Server。這是因為在 SQL Server 中有兩個缺省的登錄帳戶:BUILTIN\Administrators 以及 <機(jī)器名>\Administrator 被刪除。要恢復(fù)這兩個帳戶,可以使用以下的方法:

1、打開企業(yè)管理器,展開服務(wù)器組,然后展開服務(wù)器;

2、展開"安全性",右擊"登錄",然后單擊"新建登錄";

3、在"名稱"框中,輸入 BUILTIN\Administrators;

4、在"服務(wù)器角色"選項卡中,選擇"System Administrators" ;

5、點擊"確定"退出;

6、使用同樣方法添加 <機(jī)器名>\Administrator 登錄。

以下注冊表鍵

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
 

值決定了SQL Server將采取何種身份驗證模式。該值為1,表示使用Windows 身份驗證模式;該值為2,表示使用混合模式(Windows 身份驗證和 SQL Server 身份驗證)。

看完如何解決前兩個錯誤的方法之后,讓我們來看一下第三個錯誤。

如果遇到第三個錯誤,一般而言表示客戶端已經(jīng)找到了這臺服務(wù)器,并且可以進(jìn)行連接,不過是由于連接的時間大于允許的時間而導(dǎo)致出錯。這種情況一般會發(fā)生在當(dāng)用戶在Internet上運(yùn)行企業(yè)管理器來注冊另外一臺同樣在Internet上的服務(wù)器,并且是慢速連接時,有可能會導(dǎo)致以上的超時錯誤。有些情況下,由于局域網(wǎng)的網(wǎng)絡(luò)問題,也會導(dǎo)致這樣的錯誤。

要解決這樣的錯誤,可以修改客戶端的連接超時設(shè)置。默認(rèn)情況下,通過企業(yè)管理器注冊另外一臺SQL Server的超時設(shè)置是 4 秒,而查詢分析器是 15 秒(這也是為什么在企業(yè)管理器里發(fā)生錯誤的可能性比較大的原因)。具體步驟為:

1、在企業(yè)管理器中,選擇菜單上的"工具",再選擇"選項";

2、在彈出的"SQL Server企業(yè)管理器屬性"窗口中,點擊"高級"選項卡;

3、在"連接設(shè)置"下的"登錄超時(秒)"右邊的框中輸入一個比較大的數(shù)字,如 20。

查詢分析器中也可以在同樣位置進(jìn)行設(shè)置。

二、應(yīng)用程序連接失敗

以上的三種錯誤信息都是發(fā)生在 SQL Server 自帶的客戶端工具中,在應(yīng)用程序中我們也會遇到類似的錯誤信息,例如:

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 連接相關(guān)聯(lián)。

Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'.
[Microsoft][ODBC SQL Server Driver]超時已過期.
 

首先,讓我們來詳細(xì)看以下的示意圖來了解一下使用 ODBC 和使用 OLE DB 連接 SQL Server 有什么不同之處。

在實際使用中,應(yīng)用程序創(chuàng)建和使用各種 ADO 對象,ADO 對象框架調(diào)用享用的 OLE DB 提供者。

為了訪問 SQL Server 數(shù)據(jù)庫,OLE DB 提供了兩種不同的方法:用于 SQL Server 的 OLE DB 提供者以及用于 ODBC 的 OLE DB 提供者。這兩種不同的方法對應(yīng)于兩種不同的連接字符串,標(biāo)準(zhǔn)的連接字符串寫法如下所示:

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 數(shù)據(jù)源):

使用 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 數(shù)據(jù)源):

oConn.Open "DSN=mySystemDSN;" & _ 
"Uid=myUsername;" & _ 
"Pwd=myPassword"
 

如果遇到連接失敗的情況,我們只要按照一中所示的方法,結(jié)合程序中的連接字符串進(jìn)行檢查,基本都能得到解決。另外,還有以下幾個要注意的地方:

     1、配置 ODBC 數(shù)據(jù)源時,點擊"客戶端"配置選項可以讓我們指定連接使用的網(wǎng)絡(luò)庫、端口號等屬性。

    2、如果遇到連接超時的錯誤,我們可以在程序中修改 Connection 對象的超時設(shè)置,再打開該連接。例如:

<%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%>
     3、如果遇到查詢超時的錯誤,我們可以在程序中修改 Recordset 對象的超時設(shè)置,再打開結(jié)果集。例如:

Dim cn As New ADODB.ConnectionDim rs As ADODB.Recordset. . .
cmd1 = txtQuery.TextSet rs = New ADODB.Recordsetrs.Properties
("Command Time Out") = 300'
//同樣以秒為單位,如果設(shè)置為 0 表示無限制
rs.Open cmd1, cnrs.MoveFirst. . .
 
    三、小結(jié) 
    本文針對大部分用戶在使用 SQL Server 過程中常見的連接失敗的錯誤,重點討論了在使用 SQL Server 客戶端工具以及用戶開發(fā)的應(yīng)用程序兩種情況下,如何診斷并解決連接失敗的錯誤。看過本文以后,相信每一個讀者都會對 SQL Server 的連接工作原理、身份驗證方式以及應(yīng)用程序開發(fā)等有一個較為全面而深入的連接。

關(guān)鍵字:SQL Server、服務(wù)器、局域網(wǎng)

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報有獎  警警  手機(jī)打開網(wǎng)站