簡體   English   中英

客戶端在連接到 Azure SQL 數據庫時遇到問題

[英]Client having issues connecting to Azure SQL Database

我已經為我的客戶構建了一個 C# 應用程序,並且我正在使用 Microsoft Azure 托管數據庫。 我發現為了讓客戶端訪問數據庫,我需要將他們的客戶端 IP 添加到防火牆配置中。 有什么方法可以在他們啟動應用程序后自動完成,或者是否可以使用另一種更有效的身份驗證方法,因為該應用程序將從網站下載並可供任何人使用,所以我需要一種方法來授予訪問權限給任何下載我的應用程序的人。 我對 Microsoft Azure 還很陌生,所以如果我表現得愚蠢,請原諒我,我只需要一些建議。 提前致謝。

無法自動將客戶端 IP 添加到Azure SQL 數據庫防火牆中。

但是您可以設置防火牆范圍以允許所有數據庫用戶從任何客戶端 IP 連接 Azure SQL 數據庫:設置防火牆范圍:

0.0.0.0---255.255.255.255

在此處輸入圖像描述

但正如@Caurav Mantri 提到的,您必須考慮數據庫安全問題以保護 SQL 數據庫。

請參考:

  1. SQL 數據庫和 Azure Synapse 的透明數據加密
  2. 始終加密:保護敏感數據並將加密密鑰存儲在 Azure 密鑰庫中

希望這可以幫助。

  1. 以編程方式添加每個 ip 地址:

    • 使用 tsql:

如果您想以編程方式將 ip 地址添加到數據庫防火牆,您可以在 Azure 數據庫中運行以下存儲過程。

MSDN 上的 sp_set_database_firewall_Rule

-- Create database-level firewall setting for only IP 0.0.0.4  
  EXECUTE sp_set_database_firewall_rule N'Example DB Setting 1', '0.0.0.4', '0.0.0.4'; 
  • 使用命令行:

您可以使用 SQLCMD.exe 執行存儲過程sp_set_daabase_firewall_rule

String clientIPAddress = Request.UserHostAddress;
using(SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlAzureMaster"].ConnectionString)) {
 sqlConnection.Open();
 using(SqlCommand sqlCommand = new SqlCommand("sp_set_firewall_rule", sqlConnection)) {
  sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
  sqlCommand.Parameters.Add("@name", SqlDbType.NVarChar).Value = clientIPAddress;
  sqlCommand.Parameters.Add("@start_ip_address", SqlDbType.VarChar).Value = clientIPAddress;
  sqlCommand.Parameters.Add("@end_ip_address", SqlDbType.VarChar).Value = clientIPAddress;
  sqlCommand.ExecuteNonQuery();
 }
}

2.防火牆規則更改后刷新緩存

一次,您以編程方式添加防火牆規則,您必須更新保存登錄名的身份驗證緩存,數據庫的防火牆規則。

您需要調用以下命令。 msdn 上的 DBCC FLUSTHAUTHCACHE

DBCC FLUSHAUTHCACHE 

注:為辦公網絡添加ip地址范圍:

如果您的客戶將在辦公網絡中工作,您可以獲得該辦公網絡的 ip 地址范圍並添加它們。 它將避免您每次將 ip 地址添加到數據庫中。 數據庫一次支持 128 個 IP 配置。 確保您沒有超過 128 限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM