-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathHashbytes_Generator.linq
29 lines (21 loc) · 1.05 KB
/
Hashbytes_Generator.linq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<Query Kind="SQL" />
declare @table varchar(255), @schema varchar(255),
@columns varchar(max), @keycolumns varchar(max),
@statement nvarchar(max), @filter varchar(max)
SET @table = 'Sampl2'
SET @filter = 'WHERE 1=1'--This param, dont expose to public interfaces
--Defaults
SET @schema = COALESCE(@schema, 'dbo')
--
--concat all keys
SELECT @keycolumns = COALESCE(concat(@keycolumns, '[',COLUMN_NAME, ']', ','), COLUMN_NAME)
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = @table and TABLE_SCHEMA = @schema
--concat all collumns
SELECT @columns = COALESCE(concat(@columns, '[', COLUMN_NAME, ']', ','), COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @table and TABLE_SCHEMA = @schema
--remove the ending commas
SET @keycolumns = LEFT(@keycolumns, LEN(@keycolumns) - 1)
SET @columns = LEFT(@columns, LEN(@columns) - 1)
SET @statement = concat('SELECT ', @keycolumns, ', HASHBYTES (''SHA'', CONCAT(', @columns, ')) FROM ', @schema, '.', @table, SPACE(1), @filter)
PRINT 'We gonna run this: ' + @statement;
exec sp_executesql @statement