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

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

SQL Server連接失敗錯(cuò)誤的解決

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

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

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

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

1、SQL Server名稱(chēng)或IP地址拼寫(xiě)有誤;

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

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

要解決這個(gè)問(wèn)題,我們一般要遵循以下的步驟來(lái)一步步找出導(dǎo)致錯(cuò)誤的原因。

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

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

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

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

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

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

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

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

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

    172.168.10.24 myserver
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

通過(guò)以上幾個(gè)方面的檢查,錯(cuò)誤 1 發(fā)生的原因基本上可以被排除。下面我們?cè)僭敿?xì)描述如何來(lái)解決錯(cuò)誤 2。

當(dāng)用戶(hù)嘗試在查詢(xún)分析器里面使用sa來(lái)連接SQL Server,或者在企業(yè)管理器里面使用sa來(lái)新建一個(gè)SQL Server注冊(cè)時(shí),經(jīng)常會(huì)遇到如圖 2 所示的錯(cuò)誤信息。

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

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

2、 展開(kāi)"SQL Server組",鼠標(biāo)右鍵點(diǎn)擊SQL Server服務(wù)器的名稱(chēng),選擇"屬性",再選擇"安全性"選項(xiàng)卡;

3、 在"身份驗(yàn)證"下,選擇"SQL Server和 Windows ";

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

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

這種情形被形象地稱(chēng)之為"自己把自己鎖在了門(mén)外",因?yàn)闊o(wú)論用何種方式,用戶(hù)均無(wú)法使用進(jìn)行連接。實(shí)際上,我們可以通過(guò)修改一個(gè)注冊(cè)表鍵值來(lái)將身份驗(yàn)證方式改為 SQL Server 和 Windows 混合驗(yàn)證,步驟如下所示:

1、點(diǎn)擊"開(kāi)始"-"運(yùn)行",輸入regedit,回車(chē)進(jìn)入注冊(cè)表編輯器;

2、依次展開(kāi)注冊(cè)表項(xiàng),瀏覽到以下注冊(cè)表鍵:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
 

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

4、將原值從1改為2,點(diǎn)擊"確定";

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

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

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

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

2、展開(kāi)"安全性",右擊"登錄",然后單擊"新建登錄";

3、在"名稱(chēng)"框中,輸入 BUILTIN\Administrators;

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

5、點(diǎn)擊"確定"退出;

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

以下注冊(cè)表鍵

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
 

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

看完如何解決前兩個(gè)錯(cuò)誤的方法之后,讓我們來(lái)看一下第三個(gè)錯(cuò)誤。

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

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

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

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

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

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

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

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

Microsoft OLE DB Provider for SQL Server (0x80004005)
[DBNETLIB][ConnectionOpen (Connect()).]Specified SQL server not found.

Microsoft OLE DB Provider for SQL Server (0x80004005)
用戶(hù) 'sa' 登錄失敗。原因: 未與信任 SQL Server 連接相關(guān)聯(lián)。

Microsoft OLE DB Provider for ODBC Drivers 錯(cuò)誤 '80004005'.
[Microsoft][ODBC SQL Server Driver]超時(shí)已過(guò)期.
 

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

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

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

1、使用用于 SQL Server 的 OLE DB 提供者:

使用 SQL Server 身份驗(yàn)證:

oConn.Open "Provider=sqloledb;" & _ 
"Data Source=myServerName;" & _
"Initial Catalog=myDatabaseName;" & _
"User Id=myUsername;" & _
"Password=myPassword"
 
使用 Windows 身份驗(yàn)證(信任連接):

oConn.Open "Provider=sqloledb;" & _
"Data Source=myServerName;" & _
"Initial Catalog=myDatabaseName;" & _
"Integrated Security=SSPI"
 

    2、使用用于 ODBC 的 OLE DB 提供者(不使用 ODBC 數(shù)據(jù)源):

使用 SQL Server 身份驗(yàn)證:

oConn.Open "Driver={SQL Server};" & _ 
"Server=MyServerName;" & _
"Database=myDatabaseName;" & _
"Uid=myUsername;" & _
"Pwd=myPassword"
 

使用 Windows 身份驗(yàn)證(信任連接):

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)行檢查,基本都能得到解決。另外,還有以下幾個(gè)要注意的地方:

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

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

<%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、如果遇到查詢(xún)超時(shí)的錯(cuò)誤,我們可以在程序中修改 Recordset 對(duì)象的超時(shí)設(shè)置,再打開(kāi)結(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 表示無(wú)限制
rs.Open cmd1, cnrs.MoveFirst. . .
 
    三、小結(jié) 
    本文針對(duì)大部分用戶(hù)在使用 SQL Server 過(guò)程中常見(jiàn)的連接失敗的錯(cuò)誤,重點(diǎn)討論了在使用 SQL Server 客戶(hù)端工具以及用戶(hù)開(kāi)發(fā)的應(yīng)用程序兩種情況下,如何診斷并解決連接失敗的錯(cuò)誤。看過(guò)本文以后,相信每一個(gè)讀者都會(huì)對(duì) SQL Server 的連接工作原理、身份驗(yàn)證方式以及應(yīng)用程序開(kāi)發(fā)等有一個(gè)較為全面而深入的連接。

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

分享到:

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