[英]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 數據庫。
請參考:
希望這可以幫助。
以編程方式添加每個 ip 地址:
如果您想以編程方式將 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.