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 Database 服务器。 可能的最低 IP 地址为 0.0.0.0
。
[ @end_ip_address = ] 'end_ip_address'
服务器级防火墙设置范围内的最高 IP 地址。 @end_ip_address是 varchar(50)。 等于或小于此值的 IP 地址可能尝试连接到 SQL Database 服务器。 可能的最高 IP 地址为 255.255.255.255
。
当此字段和 @start_ip_address 字段相等 0.0.0.0
时,允许 Azure 连接尝试。
注解
服务器级防火墙设置的名称必须是唯一的。 如果为存储过程提供的设置的名称已存在于防火墙设置表中,则会更新起始和结束 IP 地址。 否则,将创建新的服务器级防火墙设置。
若添加的服务器级防火墙设置的起始和结束 IP 地址均为 0.0.0.0
,此时支持从 Azure 访问你的 SQL Database 服务器。 为名称参数提供一个值,以帮助记住服务器级防火墙设置的用途。
在 SQL 数据库中,对连接和服务器级别的防火墙规则进行身份验证时所需的登录数据会暂时缓存在每个数据库中。 此缓存定期刷新。 若要强制刷新身份验证缓存并确保数据库具有最新版本的登录名表,请执行 DBCC FLUSHAUTHCACHE (Transact-SQL)。
这是一个扩展存储过程,因此为每个参数传入的值的数据类型必须与参数定义匹配。
权限
只有预配过程创建的服务器级主体登录名或分配为管理员的 Microsoft Entra ID 主体才能创建或修改服务器级防火墙规则。 用户必须连接到 master
数据库才能执行 sp_set_firewall_rule
。
示例
以下代码创建了支持从 Azure 进行访问的名为 Allow 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.2
、0.0.0.3
和 0.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';