Azure SQL 數據庫常見的連接問題

來源: Microsoft Azure
作者:Microsoft Azure
時間:2021-02-02
16959
這篇文章總結了常見的Azure SQL數據庫連接失敗的情況,主要分為5大類,旨在幫助用戶或企業(yè)數據庫管理員排查數據庫連接異常的問題。

這篇文章總結了常見的Azure SQL數據庫連接失敗的情況,主要分為5大類,旨在幫助用戶或企業(yè)數據庫管理員排查數據庫連接異常的問題。

問題一:連接字符串問題

1.錯誤的login或密碼

如果在連接數據庫的時候輸入了錯誤的login或者密碼,那么通常我們會看到如下報錯:

error.png

這時可以檢查一下連接字符串或者SSMS客戶端輸入的login和密碼是否正確。

2.錯誤的服務器名稱

在遇到下面這種報錯信息的時候,需要檢查一下是否是服務器名稱輸入有誤。

error-2.png

問題二:Login/User權限問題

如果使用的Login并沒有訪問目標數據庫的權限,那么在嘗試直接連接到這個數據庫或者連接到master數據庫后展開這個數據庫的時候就會遇到下面這個錯誤:

error-3.png

這時候需要根據情況為這個Login創(chuàng)建一個User,然后賦予這個User訪問數據庫的權限;或者直接更換一個有訪問權限的賬號進行連接。下面的例子是如何創(chuàng)建一個名為testlogin的Login并且賦予對數據庫testdb的read權限:

--在master數據庫下運行語句,創(chuàng)建名為testlogin的Login

CREATE LOGIN testlogin WITH password='Pass word1';

--切換到testdb數據庫,創(chuàng)建名為testuser的User

CREATE USER testuser FROM LOGIN testlogin;

--給新建的testuser添加read權限

EXEC sp_addrolemember'db_datareader','testuser';

問題三:防火墻設置問題

1.IP地址不在允許列表中

如果發(fā)起連接的客戶端IP地址不在Azure SQL Database的IP允許列表中,那么連接會失敗。這時候需要登錄到Azure管理門戶中添加相應的防火墻規(guī)則。

firewall.png

2.在客戶端和Internet之間的所有防火墻上面,確保1433端口的出站鏈接(outbound connection)是開放的。

3.對于部署在Azure虛擬機上的客戶端,除1433端口外,確保為客戶端與SQL數據庫之間的交互保留Azure客戶端計算機上11000-11999和14000-14999的端口范圍。

問題四:暫時性錯誤

當應用嘗試連接到Azure SQL Database的時候,如果收到了下面的錯誤信息:

Error code 40613:"Database<x>on server<y>is not currently available.Please retry the connection later.If the problem persists,contact customer support,and provide them the session tracing ID of<z>"

這種錯誤通常都是暫時性的。SQL Database在需要動態(tài)調整硬件資源,或者有計劃事件(例如軟件更新)等情況下,會觸發(fā)重新配置(reconfiguration),大多數的重新配置會很快完成,最多不超過60s。針對這種暫時性的錯誤,可以有如下解決辦法:

1.應用端應該做好應對這種暫時性錯誤的準備,很重要的一點就是添加重試邏輯(retry logic),在問題發(fā)生時進行重試而不是直接把報錯拋給客戶端/用戶,有關重試邏輯的示例代碼,可以參考:SQL Azure Connection Retry

2.當數據庫的資源使用接近上限時,也可能造成暫時的連接問題。對于這種情況,可以通過管理門戶的監(jiān)控圖表來及時發(fā)現資源不足的情況,根據實際需求調整服務級別。

問題五:啟用了數據庫表審核

在開啟了Azure SQL Database Table Auditing之后,對于下層客戶端來說,需要修改連接字符串,否則會出現無法連接的情況。

備注

該問題只會出現在應用了Table Auditing的情況,而Table Auditing目前已經被棄用。對于Blob Auditing,則不需要修改。

對于“下層客戶端”,即支持TDS 7.3版和更低版本的客戶端—應修改連接字符串中的服務器FQDN:

連接字符串中的原始服務器FQDN:<服務器名稱>.database.chinacloudapi.cn

連接字符串中修改后的服務器FQDN:<服務器名稱>.database.secure.chinacloudapi.cn

“下層客戶端”的部分列表包括:

·.NET 4.0和更低版本,

·ODBC 10.0和更低版本。

·JDBC(JDBC雖然支持TDS 7.4,但不完全支持TDS重定向功能)

·Tedious(適用于Node.JS)

關于更多相關信息,可以參考:SQL數據庫-針對審核的下層客戶端支持和IP終結點更改。

立即登錄,閱讀全文
版權說明:
本文內容來自于Microsoft Azure,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯系管理員(zzx@kchuhai.com)刪除!
優(yōu)質服務商推薦
更多
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家