我的查詢似乎無法決議 information_type
復制步驟:
- 使用 AdventureWork 或任何其他測驗資料庫
- 右鍵單擊您的測驗資料庫 >
Tasks > Data Discovery and Classification > Classify Data...并對一堆資料進行分類 - 現在使用此查詢來檢查您的
information_type列(這里我使用的是 AdventureWork2019):
粘貼此選擇并執行
SELECT
schema_name(O.schema_id) AS schema_name,
O.NAME AS table_name,
C.NAME AS column_name,
[Type] =
CASE
WHEN ct.[name] IN ('varchar', 'char') THEN ct.[name] '(' IIF(c.max_length = -1, 'max', CAST(c.max_length AS VARCHAR(25))) ')'
WHEN ct.[name] IN ('nvarchar','nchar') THEN ct.[name] '(' IIF(c.max_length = -1, 'max', CAST(c.max_length / 2 AS VARCHAR(25))) ')'
WHEN ct.[name] IN ('decimal', 'numeric') THEN ct.[name] '(' CAST(c.precision AS VARCHAR(25)) ', ' CAST(c.scale AS VARCHAR(25)) ')'
WHEN ct.[name] IN ('datetime2') THEN ct.[name] '(' CAST(c.scale AS VARCHAR(25)) ')'
ELSE ct.[name]
END,
information_type,
label,
rank,
rank_desc,
CAST(
CASE
WHEN information_type = 'Contact Info'
THEN 'contact info'
ELSE 'not contact info'
END AS varchar(max)) as Checking_Content
FROM sys.sensitivity_classifications sc
JOIN sys.objects O
ON sc.major_id = O.object_id
JOIN sys.columns C
ON sc.major_id = C.object_id AND sc.minor_id = C.column_id
JOIN sys.types ct ON C.user_type_id = ct.user_type_id
--AND EP.minor_id = C.column_id
order by information_type
如您所見,not contact info即使該列information_type具有值,查詢也會回傳Contact Info
| 模式名稱 | 表名 | 列名 | 型別 | 資訊型別 | 標簽 | 秩 | rank_desc | Checking_Content |
|---|---|---|---|---|---|---|---|---|
| 人 | 個人電話 | 電話號碼 | 電話 | 聯系方式 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人 | 個人電話 | 電話號碼型別ID | 整數 | 聯系方式 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人 | 電話號碼型別 | 電話號碼型別ID | 整數 | 聯系方式 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人 | 地址 | 地址第一行 | nvarchar(60) | 聯系方式 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人 | 地址 | 地址行 2 | nvarchar(60) | 聯系方式 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人 | 地址 | 城市 | nvarchar(30) | 聯系方式 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人 | 地址 | 郵政編碼 | nvarchar(15) | 聯系方式 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 生產 | 產品審核 | 電子郵件地址 | nvarchar(50) | 聯系方式 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人 | 電子郵件地址 | 電子郵件地址 | nvarchar(50) | 聯系方式 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 德博 | 錯誤日志 | 用戶名 | 系統名稱 | 證書 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人 | 密碼 | 密碼哈希 | 變數(128) | 證書 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人 | 密碼 | 密碼鹽 | 變數字符(10) | 證書 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 銷售量 | 信用卡 | 信用卡號 | 整數 | 信用卡 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 銷售量 | 信用卡 | 卡的種類 | nvarchar(50) | 信用卡 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 銷售量 | 信用卡 | 卡號 | nvarchar(25) | 信用卡 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 銷售量 | 信用卡 | 到期年 | 小整數 | 信用卡 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 銷售量 | 個人信用卡 | 信用卡號 | 整數 | 信用卡 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 銷售量 | 銷售訂單標題 | 信用卡號 | 整數 | 信用卡 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 銷售量 | 銷售訂單標題 | 信用卡審批代碼 | 變數字符(15) | 信用卡 | 機密的 | 20 | 中等的 | 不是聯系方式 |
| 人力資源 | 員工 | 生日 | 日期 | 出生日期 | 機密 - GDPR | 20 | 中等的 | 不是聯系方式 |
我很困惑:

你怎么認為?
uj5u.com熱心網友回復:
根據
exec sp_describe_first_result_set N'select * from sys.sensitivity_classifications sc'
information_type 是一個 sql_variant。這不是每個檔案,但不應該是一個問題,因為兼容型別被轉換為 sql_variant 進行比較而沒有問題。例如
select case when cast(N'Contact Info' as sql_variant) = 'Contact Info' then 1 else 0 end
回報
1
所以這可能是一個錯誤。您可以通過顯式轉換為 nvarchar 來解決。例如
SELECT
schema_name(O.schema_id) AS schema_name,
O.NAME AS table_name,
C.NAME AS column_name,
[Type] =
CASE
WHEN ct.[name] IN ('varchar', 'char') THEN ct.[name] '(' IIF(c.max_length = -1, 'max', CAST(c.max_length AS VARCHAR(25))) ')'
WHEN ct.[name] IN ('nvarchar','nchar') THEN ct.[name] '(' IIF(c.max_length = -1, 'max', CAST(c.max_length / 2 AS VARCHAR(25))) ')'
WHEN ct.[name] IN ('decimal', 'numeric') THEN ct.[name] '(' CAST(c.precision AS VARCHAR(25)) ', ' CAST(c.scale AS VARCHAR(25)) ')'
WHEN ct.[name] IN ('datetime2') THEN ct.[name] '(' CAST(c.scale AS VARCHAR(25)) ')'
ELSE ct.[name]
END,
information_type,
label,
rank,
rank_desc,
CAST(
CASE
WHEN cast(information_type as nvarchar(200)) = 'Contact Info'
THEN 'contact info'
ELSE 'not contact info'
END AS varchar(max)) as Checking_Content
FROM sys.sensitivity_classifications sc
JOIN sys.objects O
ON sc.major_id = O.object_id
JOIN sys.columns C
ON sc.major_id = C.object_id AND sc.minor_id = C.column_id
JOIN sys.types ct ON C.user_type_id = ct.user_type_id
--AND EP.minor_id = C.column_id
order by information_type
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/381366.html
標籤:sql sql-server 查询语句 数据屏蔽 动态数据屏蔽
上一篇:SQL按型別計數
