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