sp_set_firewall_rule (Azure SQL Database)

適用於:Azure SQL 資料庫 Azure Synapse Analytics

建立或更新 SQL 資料庫 伺服器的伺服器層級防火牆設定。 這個預存程式僅適用於 master 伺服器層級主體登入或指派的 Microsoft Entra ID (先前稱為 Azure Active Directory) 主體。

語法

sp_set_firewall_rule
    [ @name = ] N'name'
    , [ @start_ip_address = ] 'start_ip_address'
    , [ @end_ip_address = ] 'end_ip_address'
[ ; ]

引數

[ @name = ] N'name'

用來描述和區分伺服器層級防火牆設定的名稱。 @name是 nvarchar(128)

[ @start_ip_address = ] 'start_ip_address'

伺服器層級防火牆設定範圍中最低的 IP 位址。 @start_ip_address是 varchar(50)。 等於或大於這個位址的 IP 位址可以嘗試連接至 SQL Azure 伺服器。 可能的最低 IP 位址為 0.0.0.0

[ @end_ip_address = ] 'end_ip_address'

伺服器層級防火牆設定範圍中最高的 IP 位址。 @end_ip_address是 varchar(50)。 等於或小於這個位址的 IP 位址可以嘗試連接至 SQL Azure 伺服器。 可能的最高 IP 位址為 255.255.255.255

當此欄位和 @start_ip_address 字段相等 0.0.0.0時,允許 Azure 連線嘗試。

備註

伺服器層級防火牆設定的名稱必須是唯一的。 如果為預存程式提供的設定名稱已存在於防火牆設定數據表中,則會更新起始和結束IP位址。 否則,會建立新的伺服器層級防火牆設定。

如果您加入的伺服器層級防火牆設定中的開始和結束 IP 位址等於 0.0.0.0,表示可從 Azure 存取您的 SQL Azure 伺服器。 提供名稱參數的值,以協助您記住伺服器層級防火牆設定的用途。

在 SQL Database 中,驗證連線需要登入資料,且伺服器層級防火牆規則的快取會暫時在每個資料庫中進行。 此快取會定期重新整理。 若要強制重新整理驗證快取,並確定資料庫擁有登入資料表的最新版本,請執行 DBCC FLUSHAUTHCACHE (Transact-SQL)

這是擴充預存程序,因此針對每個參數傳入之值的資料類型必須符合參數定義。

權限

只有布建程式所建立的伺服器層級主體登入,或指派為系統管理員的 Microsoft Entra ID 主體,才能建立或修改伺服器層級防火牆規則。 使用者必須連接到 master 資料庫,才能執行 sp_set_firewall_rule

範例

下列程式碼會建立名為 Allow Azure 的伺服器層級防火牆設定,該設定可讓您從 Azure 進行存取。 在虛擬 master 資料庫中執行下列腳本。

-- Enable Azure connections.
EXEC sp_set_firewall_rule N'Allow Azure', '0.0.0.0', '0.0.0.0';

以下程式碼只會針對 IP 位址 Example setting 1 建立名為 0.0.0.2 的伺服器層級防火牆設定。 然後會再次呼叫 sp_set_firewall_rule 預存程序,在該防火牆設定中更新結束 IP 位址為 0.0.0.4。 這會建立一個範圍,允許 IP 位址 0.0.0.20.0.0.30.0.0.4 存取伺服器。

-- Create server-level firewall setting for only IP 0.0.0.2
EXEC sp_set_firewall_rule N'Example setting 1', '0.0.0.2', '0.0.0.2';

-- Update server-level firewall setting to create a range of allowed IP addresses
EXEC sp_set_firewall_rule N'Example setting 1', '0.0.0.2', '0.0.0.4';