sync classification scripts

This commit is contained in:
2023-03-31 08:00:35 +02:00
parent ed02942184
commit 16640f9512
3 changed files with 603 additions and 472 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,23 +0,0 @@
SELECT SCHEMA_NAME([O].[schema_id]) AS schema_name,
O.name AS table_name,
C.name AS column_name,
[sc].[information_type],
[sc].[label],
[sc].[rank],
[sc].[rank_desc]
,'ADD SENSITIVITY CLASSIFICATION TO ['+CAST(SCHEMA_NAME([O].[schema_id]) AS NVARCHAR(100))+'].['+CAST(o.[name] AS NVARCHAR(100))+'].['+CAST(c.name AS NVARCHAR(100))+'] WITH ( LABEL='''+CAST(sc.[label] AS NVARCHAR(100))+''', INFORMATION_TYPE='''+CAST(sc.[information_type] AS NVARCHAR(100))+''' '
+ CASE
WHEN sc.[rank_desc] IS NOT NULL THEN ', RANK='+sc.[rank_desc]
ELSE ''
END
+')'
--sc.*
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]
--WHERE CAST(sc.[information_type] AS VARCHAR(500)) <> 'Other'
--WHERE [O].[name] LIKE '[IIICommon_Bank_PTT_Master]'
ORDER BY CAST([sc].[information_type] AS VARCHAR(500)), [schema_name], [table_name], [column_name];

View File

@@ -0,0 +1,74 @@
DECLARE @useSql2019Syntax BIT = CASE
WHEN CAST(SERVERPROPERTY('productversion') AS VARCHAR(2)) >= 15 THEN 1
ELSE 0
END ;
IF @useSql2019Syntax = 1
BEGIN
EXEC ('
SELECT SCHEMA_NAME([O].[schema_id]) AS schema_name,
O.name AS table_name,
C.name AS column_name,
[sc].[information_type],
[sc].[label],
[sc].[rank],
[sc].[rank_desc]
,''ADD SENSITIVITY CLASSIFICATION TO [''+CAST(SCHEMA_NAME([O].[schema_id]) AS NVARCHAR(100))+''].[''+CAST(o.[name] AS NVARCHAR(100))+''].[''+CAST(c.name AS NVARCHAR(100))+''] WITH ( LABEL=''''''+CAST(sc.[label] AS NVARCHAR(100))+'''''', INFORMATION_TYPE=''''''+CAST(sc.[information_type] AS NVARCHAR(100))+'''''' ''
+ CASE
WHEN sc.[rank_desc] IS NOT NULL THEN '', RANK=''+sc.[rank_desc]
ELSE ''''
END
+'')''
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]
--WHERE CAST(sc.[information_type] AS VARCHAR(500)) <> ''Other''
--WHERE [O].[name] LIKE ''[IIICommon_Bank_PTT_Master]''
ORDER BY CAST([sc].[information_type] AS VARCHAR(500)), [schema_name], [table_name], [column_name];
')
END
ELSE
BEGIN
SELECT
schema_name(O.schema_id) AS schema_name,
O.[name] AS table_name,
C.[name] AS column_name,
[EP].[information_type],
[EP].[sensitivity_label]
FROM
(
SELECT
IT.major_id,
IT.minor_id,
IT.information_type,
L.sensitivity_label
FROM
(
SELECT
major_id,
minor_id,
value AS information_type
FROM sys.extended_properties
WHERE NAME = 'sys_information_type_name'
) IT
FULL OUTER JOIN
(
SELECT
major_id,
minor_id,
value AS sensitivity_label
FROM sys.extended_properties
WHERE NAME = 'sys_sensitivity_label_name'
) L
ON IT.major_id = L.major_id AND IT.minor_id = L.minor_id
) EP
JOIN sys.objects O
ON EP.major_id = O.object_id
JOIN sys.columns C
ON EP.major_id = C.object_id AND EP.minor_id = C.column_id
;
END