You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过SQL脚本实现Azure SQL数据库的数据分类配置?

绝对可以用SQL脚本批量搞定这些Azure SQL Data Classifications的配置,而且你猜的完全没错——确实有系统对象存储这些分类标签信息!下面给你详细拆解这两个问题:

1. 用SQL脚本批量配置Data Classifications

Azure SQL提供了专门的系统存储过程来管理数据分类,你可以用sys.sp_add_data_classification给列添加敏感度标签和信息类型。因为100个数据库架构完全一致,你只需要写好一份分类脚本,再批量在所有目标数据库上执行就行。

举个实际示例:假设要给dbo.Customers表的Email列设置「机密」敏感度标签和「联系人信息」信息类型,脚本如下:

EXEC sys.sp_add_data_classification
    @label = '机密',
    @label_id = '7e023654-6f6c-4475-bd1a-3c0c392d88a9', -- 对应「机密」标签的固定ID,可从现有配置或Azure内置标签获取
    @information_type = '联系人信息',
    @information_type_id = 'd63968cc-75a0-4a06-81a5-3947c864d69e',
    @schema_name = 'dbo',
    @table_name = 'Customers',
    @column_name = 'Email';

如果要批量在100个数据库上执行,可用动态SQL遍历目标库:

DECLARE @DBName NVARCHAR(128)
DECLARE @SQL NVARCHAR(MAX)

-- 根据你的数据库命名规则过滤目标库
DECLARE db_cursor CURSOR FOR
SELECT name FROM sys.databases WHERE name LIKE 'CustomerDB_%'

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @DBName

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @SQL = 'USE [' + @DBName + '];
    EXEC sys.sp_add_data_classification
        @label = ''机密'',
        @label_id = ''7e023654-6f6c-4475-bd1a-3c0c392d88a9'',
        @information_type = ''联系人信息'',
        @information_type_id = ''d63968cc-75a0-4a06-81a5-3947c864d69e'',
        @schema_name = ''dbo'',
        @table_name = ''Customers'',
        @column_name = ''Email'';'

    EXEC sp_executesql @SQL
    FETCH NEXT FROM db_cursor INTO @DBName
END

CLOSE db_cursor
DEALLOCATE db_cursor

提示:标签ID和信息类型ID是Azure内置的固定值,你也可以从已配置分类的数据库中查询sys.sensitivity_classifications获取对应ID。

2. 存储分类标签的系统视图

你猜对了!Azure SQL提供了sys.sensitivity_classifications系统视图,专门存储所有数据分类的详细信息。这个视图包含的核心字段有:

  • database_name:所属数据库名称
  • schema_name:列所在架构
  • table_name:列所在表
  • column_name:被分类的列名
  • label:敏感度标签名称
  • information_type:信息类型名称

你可以用以下查询快速查看所有已配置的分类:

SELECT 
    database_name,
    schema_name,
    table_name,
    column_name,
    label,
    information_type
FROM sys.sensitivity_classifications;

如果需要修改或删除分类,还可以用对应的存储过程sys.sp_update_data_classification和sys.sp_drop_data_classification。

额外注意事项

  • 执行这些操作需要ALTER ANY SENSITIVITY CLASSIFICATION权限,确保你的账号有足够权限。
  • 若使用Azure SQL弹性池,批量脚本同样适用,只需调整数据库过滤条件即可。
  • 建议先在测试库验证脚本效果,再批量执行到生产环境。

内容的提问来源于stack exchange,提问作者JKennedy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:13:20