【正文】
。關(guān)于使用服務(wù)器網(wǎng)絡(luò)實(shí)用程序的更多信息,請參見 SQL Server 在線參考書中的 “SQL Server 網(wǎng)絡(luò)實(shí)用程序 ”專題。 有時候, SQL Server 2021 可能不會綁定于端口 1433 或任何其他指定的端口。如果端口正被其他 應(yīng)用程序使用,或者如果 你 正在嘗試使用一個錯誤的 IP 地址進(jìn)行連接,就可能會出現(xiàn)此問題。因此, TCP/IP 到 SQL Server 的連接可能不成功,在 SQL Server 錯誤日志中 你 會收到下列錯誤信息: 20211114 15:49: server SuperSocket Info:Bind failed on TCP port 1433. 如果通過 TCP/IP 連接 你 不能連接到 SQL Server 實(shí)例,請嘗試使用命名管道協(xié)議或共享內(nèi)存協(xié)議。 運(yùn)行下面的命令 在命令提示符下,以獲取 信息關(guān)于正在使用的端口 : NETSTAT an 注意 :對于 SQL Server 命名實(shí)例, SQL Server 動態(tài)地決定端口并偵聽決定的端口。因此,當(dāng) 你 啟動 SQL Server 命名實(shí)例時, SQL Server 將設(shè)法偵聽之前使用的端口。如果 SQL Server 不能綁定到該端口,命名實(shí)例可能會動態(tài)地綁定到另一個端口。在這種情況下,請確認(rèn)客戶端應(yīng)用程序也被設(shè)置為動態(tài)地決定端口。作為選擇, 你 還可以為命名實(shí)例指定一個靜態(tài)端口,通過客戶端網(wǎng)絡(luò)實(shí)用程序?qū)ζ溥M(jìn)行綁定和偵聽。 解決 MDAC 問題 MDAC 的問題也可能會引起連接問題。例如,安裝一個軟件可能會覆蓋一些 MDAC 文件或更改權(quán)限,而 你 需要這些權(quán)限才能訪問 MDAC 文件。 你 可以 18 運(yùn)行 MDAC 部件檢查器來驗(yàn)證 MDAC 在計(jì)算機(jī)上的安裝。 注意 :如果 你 正連接到 SQL Server 的一個命名實(shí)例,請確認(rèn)計(jì)算機(jī)上運(yùn)行的是 MDAC 或更新的版本。 MDAC 的早期版本不識別 SQL Server 的命名實(shí)例。因此,可能無法連接到命名實(shí)例。 你 可以使用 實(shí)用程序來驗(yàn)證通過 SQL Server ODBC 驅(qū)動程序的連 接。 解決防火墻問題 如果防火墻存在于客戶端計(jì)算機(jī)和正在運(yùn)行 SQL Server 的計(jì)算機(jī)之間,請確認(rèn)通過防火墻進(jìn)行通信時所需的端口已打開。 如果 你 使用 TCP/IP 協(xié)議連接 SQL Server 實(shí)例,請確認(rèn)能夠用 Tel 程序連接到 SQL Server 正在偵聽的端口。要使用 Tel 程序,在命令提示符下運(yùn)行下列命令: Tel IP Address Port Number 如果 Tel 程序沒有成功,并且 你 接收到錯誤信息,請解決此錯誤然后嘗試再次連接。 注意 :因?yàn)橛? Slammer 病毒引起的問題,在 你 的防火墻上,用戶數(shù)據(jù)報(bào)協(xié)議 (UDP) 端口 1434 可能被阻擋。 解決身份驗(yàn)證和安全問題 由于身份認(rèn)證失敗,可能無法連接到 SQL Server。如果身份認(rèn)證失敗, 你可能收到下列錯誤信息之一: Login failed for user 39。username39。 Login failed for user 39。NTAUTHORITY\ANONYMOUS LOGON39。 Login failed for user 39。null39。 如果 你 接受 一個錯誤信息因?yàn)樯矸菡J(rèn)證失敗和錯誤信息不提到一個特定的SQL Server 登錄名,請使用 Windows 身份認(rèn)證解決該問題。由于 Windows 身份認(rèn)證的問題, 你 可能會收到下列錯誤信息: Cannot generate SSPI Context 下列問題可能會引起身份認(rèn)證和安全問題: ? NTLM 身份認(rèn)證或 Kerberos 身份認(rèn)證出現(xiàn)問題。 ? 由于連接問題,無法聯(lián)系域控制器。 ? 域之間的信任關(guān)系出現(xiàn)問題。 有關(guān)可能原因的更多信息,請參見計(jì)算機(jī)上的事件日志。要解決 Windows 身份認(rèn)證 的連接問題, 你 可以使用 SQL Server 身份認(rèn)證連接到 SQL Server 實(shí)例。 有關(guān)如何診斷和解決 “Cannot Generate SSPI Context” 如果在使用 SQL Server 身份認(rèn)證時連接沒有成功, 你 會收到下列錯誤信息: Login failed for user 39。username39。 .Not associated with a trusted connection 若要解決此問題,請按照以下步驟操作。 19 警告 : 不恰當(dāng)?shù)氖褂?“注冊表編輯器 ”可 能 導(dǎo)致嚴(yán)重問題,可能需要重 新安裝操作系統(tǒng)。 Microsoft 不能保證 你 可以解決因 “注冊表編輯器 ”使用不當(dāng)而導(dǎo)致的問題。使用 “注冊表編輯器 ”的風(fēng)險 需要 你 承 擔(dān)。 1. 請確認(rèn) SQL Server 實(shí)例配置為使用 Windows 身份認(rèn)證和 SQL Server 身份認(rèn)證。為此,請確認(rèn)在正在運(yùn)行 SQL Server 的計(jì)算機(jī)上存在下列注冊表項(xiàng)。對于默認(rèn)的 SQL Server 實(shí)例: HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\LoginMode 對 于 SQL Server 的命名實(shí)例: HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Name\MSSQLServer\LoginMode 請確認(rèn)已設(shè)置下列注冊表項(xiàng)的值: 身份認(rèn)證類型 值 僅限于 Windows 身份認(rèn)證 1 混合模式( SQL Server 身份認(rèn)證和 Windows 身份認(rèn)證) 2 注意:如果 你 對注冊表進(jìn)行了任何更改,必須關(guān)閉并重新啟動 SQL Server 實(shí)例使更改生效。 2. 嘗試使用 其他 Windows 帳戶或 SQL Server 登錄帳戶連接到 SQL Server 實(shí)例。這樣能夠幫助確定是否是由于某個特殊的登錄帳戶的問題而造成連接失敗。例如,登錄帳戶的密碼可能已被更改。 3. 嘗試使用其他協(xié)議連接到 SQL Server 實(shí)例。例如,使用 TCP/IP 協(xié)議進(jìn)行 Windows 身份認(rèn)證的連接可能會失敗,但是使用命名管道協(xié)議進(jìn)行 Windows 身份認(rèn)證的連接就可能會成功。 如果 你 正在使用證書,當(dāng)嘗試連接到 SQL Server 實(shí)例時,可能會收到一條安全錯誤信息關(guān)于 安全套接字層 (SSL)的 。 解決 TCP/IP 套接字上的壓力問題 當(dāng)你為 SQL Server 使用 ODBC 驅(qū)動程序、 Microsoft OLE DB Provider for SQL Server 或 管理提供程序時,可以使用恰當(dāng)?shù)膽?yīng)用程序 設(shè)計(jì)界面 (API) 來禁用連接。在禁用連接、并且應(yīng)用程序 時常 打開和關(guān)閉連接時, 壓力在 對基本 SQL Server 網(wǎng)絡(luò)庫可能會增 加 。有時, Web 服務(wù)器和 JDBC 驅(qū)動程序也會嘗試連接到 SQL Server 實(shí)例。因此,對 SQL Server 連接需求的增加可能會超過 SQL Server 的處理能力。這可能會給 TCP/IP 套接字帶來壓力, 你 還可能在 SQL Server 錯誤 記錄 文件中收到下列錯誤信息: 20210807 20:46: server Error:17832, Severity:20, State:6 20210807 20:46: server Connection opened but invalid login packet(s) closed. 注意 :如果運(yùn)行 SQL Server 2021 SP3 或 SQL Server 2021 SP3a,則不會注意到 20 對 TCP/IP 套接字的壓力,這是由于添加了對登陸數(shù)據(jù)包數(shù)量的限制。在使用第三方驅(qū)動程序連接到 SQL Server 實(shí)例時,發(fā)生錯誤 17832。要解決該問題,請與第三方供應(yīng)商聯(lián)系,并獲取經(jīng)測試證明能夠用于 SQL Server 2021 SP3 和 SQL Server 2021 SP3a 的驅(qū)動程序。 查看 SQL Server 實(shí)例是否以單用戶模式啟動 如果嘗試連接的 SQL Server 實(shí)例是以單用戶模式啟動的,只能建立一個到 SQL Server 的連接。如果運(yùn)行軟件的計(jì)算機(jī)自動連接到 SQL Server,該軟件可以輕松地使用唯一的連接。例如,下面的軟件可以自動連接到 SQL Server 實(shí)例: ? SQL Server 代理程序 ? 第三方備份軟件 ? 第三方監(jiān)測軟件 ? 第三方病毒軟件 ? Microsoft Inter 信息服務(wù) (IIS) ? SQL Server 企業(yè)管理器 嘗試連接到 SQL Server 實(shí)例的客戶端應(yīng)用程序收到下列錯誤信息: SQL Server does not exist or Access Denied 當(dāng)安裝過程以單用戶模式啟動 SQL Server 實(shí)例時, 這一個 錯誤一般發(fā)生在 SQL 群集安裝和服務(wù)軟件包安裝期間。指定的應(yīng)用程序 可能 自動 地 連接到使用唯一可用連接的 SQL Server 實(shí)例,從而安裝 不成功 。 要確定 SQL Server 實(shí)例是否已經(jīng)以單用戶模式啟動,請檢查 SQL Server 錯誤日志文件中是否具有一個與以下 各項(xiàng) 類似的條目: 20210731 11:26: spid3 Warning ****************** 20210731 11:26: spid3 SQL Server started in single user allowed to system catalogs. 驗(yàn)證到 SQL Server 的命名管道連接 如果 你 無法使用命名管道連接到 SQL Server 實(shí)例,請確認(rèn) SQL Server 實(shí)例配置為接受命名管道連接。 解決在恢復(fù)過程中連接超時的問題 在每次啟動一個 SQL Server 實(shí)例時, SQL Server 將恢復(fù)各個數(shù)據(jù)庫。在此恢復(fù)過程中, SQL Server 回滾未提交的事務(wù)。當(dāng)停止 SQL Server 實(shí)例時, SQL Server 還將前滾已提交的事務(wù)和沒有寫入硬盤的更改。當(dāng)恢復(fù)過程完成時, SQL Server 將在 SQL Server 錯誤日志文件中寫入下列信息: Recovery Complete 在恢復(fù)過程中, SQL Server 可能不會接受連接。在此時間內(nèi)嘗試連接到 SQL Server 的客戶端可能會收到一條與以下類似的錯誤信息: Timeout Expired 21 SQL Server 代理服務(wù)可能無法啟動,這是因?yàn)樗却? SQL Server 恢復(fù)數(shù)據(jù)庫。因此,當(dāng) 你 在 SQL Server 錯誤日志文件中收到下面的信息時,連接不再會因?yàn)槌瑫r錯誤而失敗: Recovery Complete 如果恢復(fù)過程花費(fèi)的時間很長, 你 也許還要排除恢復(fù)過程的故障。 測試連接到 SQL Server 實(shí)例的不同方法 當(dāng) 你 連接到 SQL Server 實(shí)例時,如果遇到了連接問題,可以使用下面的一種或多種方法來解決連接問題。 ? 使用 SQL Server 身份認(rèn)證和 Windows 身份認(rèn)證測試到 SQL Server 實(shí)例的連接。 ? 從其他數(shù)據(jù)源(例如 ODBC DSN、 .udl 文件、 SQL 查詢分析器、 SQL Server 企業(yè)管理器, isql 實(shí)用程序或 osql 實(shí)用程序)測試到 SQL Server 實(shí)例的連接。 ? 使用其他協(xié)議測試到 SQL Server 實(shí)例的連接。 你 可以為使用該協(xié)議的 SQL Server 實(shí)例創(chuàng)建一個新的別名,從而指定不同的協(xié)議。還可以通過在 SQL Server 實(shí)例名稱的開始處添加 tcp:、 np:、 lpc:、或 rpc: 來指定 你 的連接字符串中的協(xié)議 。例如,如果 TCP/IP 連接失敗,則命名管道連接成功。 ? 使用其他登錄帳戶測試連接,這樣可以幫助 你 確定該問題是否與某個特定的登錄帳戶有關(guān)。 ? 在 %systemroot%\system32\drivers\etc\hosts 文件中添加一個與正在運(yùn)行 SQL Server 實(shí)例的計(jì)算機(jī)的 IP 地址相應(yīng)的條目。 ? 嘗試從運(yùn)行 SQL Server 的計(jì)算機(jī)和客戶端連接到 SQL Server 實(shí)例。 ? 如果 你 正從運(yùn)行 SQL Server 的計(jì)算機(jī)進(jìn)行連接,可以指定 “.”或 “(本地) ”(不帶引號 )取代服務(wù)器名稱,然后連接。 ? 嘗試使用 IP 地址而不是服務(wù)器名稱連接到 SQL Server 實(shí)例。 ? 嘗試指定 SQL Server 實(shí)例正在偵聽的特定端口。有兩種方法:創(chuàng)建一個別名或?qū)⒁粋€端口號添加到連接字符串(例如 MyServer\MyInstance, 1433)。