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

如何查询SQL数据库中所有表内记录行添加人、绑定SSIS变量的姓名列的全部唯一值

全库提取SSIS绑定录入人列的去重人员值 实现方案

核心思路

完全依托SQL Server系统元数据视图定位全库所有符合规则的录入人列,无需手动逐表排查,再通过动态SQL拼接跨表查询,最终输出全库范围内的不重复人员名单,全程不受列所属的表、schema位置限制。

第一步:定位所有目标元数据

所有绑定SSIS变量、用于记录行添加人姓名的列通常有统一的命名规范,直接查询系统视图即可批量拉取全库匹配的列信息,过滤掉系统内置表避免无效扫描:

-- 按实际业务的列名规则调整匹配条件
SELECT 
    s.name AS schema_name,
    t.name AS table_name,
    c.name AS column_name,
    ty.name AS data_type
FROM sys.columns c
INNER JOIN sys.tables t 
    ON c.object_id = t.object_id
INNER JOIN sys.schemas s 
    ON t.schema_id = s.schema_id
INNER JOIN sys.types ty
    ON c.system_type_id = ty.system_type_id
WHERE 
    c.name LIKE '%CreatedBy%' -- 替换为你们实际的录入人列名匹配规则
    AND t.is_ms_shipped = 0

注意:匹配规则要和SSIS包中映射的列名严格对齐,避免将存其他业务值的同名字段混入扫描范围

第二步:动态生成并执行跨表去重查询

基于第一步拿到的列清单,自动拼接所有表的列查询语句,通过UNION结构合并数据源,最后在外层做全局去重,无需手动编写每段跨表查询逻辑:

DECLARE @dynamic_sql NVARCHAR(MAX) = N'';

-- 拼接所有目标列的查询片段
SELECT @dynamic_sql = @dynamic_sql + 
N'SELECT CAST([' + c.name + N'] AS NVARCHAR(100)) AS person_name 
FROM [' + s.name + N'].[' + t.name + N'] WITH (NOLOCK)
WHERE [' + c.name + N'] IS NOT NULL
UNION ALL
'
FROM sys.columns c
INNER JOIN sys.tables t 
    ON c.object_id = t.object_id
INNER JOIN sys.schemas s 
    ON t.schema_id = s.schema_id
WHERE 
    c.name LIKE '%CreatedBy%' -- 和第一步的列匹配规则保持一致
    AND t.is_ms_shipped = 0;

-- 移除末尾多余的UNION ALL,套外层全局去重逻辑
SET @dynamic_sql = N'
SELECT DISTINCT person_name 
FROM (' + 
    -- 去掉最后一行多余的UNION ALL关键字
    LEFT(@dynamic_sql, LEN(@dynamic_sql) - LEN('UNION ALL')) + 
N') AS source_data 
ORDER BY person_name;';

-- 执行最终查询
EXEC sp_executesql @dynamic_sql;

落地注意事项

  • 方案为实时读取表内存储的列值,不受值随日期动态变化的影响,只要是历史写入的人员姓名值都会被纳入统计范围,无需针对不同日期的数据集单独拆分查询
  • 针对超大型表的扫描,可以在拼接的查询片段中追加时间范围过滤条件(比如仅统计近1年写入的数据),减少全表扫描带来的实例性能压力
  • 统一将列值转为NVARCHAR(100)类型,可避免不同表的同名字段因数据长度、类型差异导致的动态SQL执行报错
  • 只要列名符合匹配规则,无论该列存在于业务库schema、归档表schema、历史备份表schema中,都会被自动纳入扫描范围,完全满足不受表位置限制的需求

内容的提问来源于stack exchange,提问作者J.Contigo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 17:45:03