@@ -3,6 +3,7 @@ Author: Konstantin Taranov
33Source: https://github.com/ktaranov/sqlserver-kit/blob/master/Scripts/Table_Parameters.sql
44*/
55
6+
67DECLARE @databaseName SYSNAME = N ' AdventureWorks2017' ;
78DECLARE @schemaName SYSNAME = N ' Person' ;
89DECLARE @tableName SYSNAME = N ' CountryRegion' ;
@@ -15,68 +16,67 @@ THROW 50000, @TROW50000, 1;
1516IF LEFT (@databaseName, 1 ) = N ' [' OR
1617 LEFT (@tableName, 1 ) = N ' [' OR
1718 LEFT (@schemaName, 1 ) = N ' ['
18- THROW 50001 , ' Please do not use quotes in Databse , Table or Schema names! In the procedure it is alredy done with QUOTENAME function.' , 1 ;
19+ THROW 50001 , ' Please do not use square quotes in Database , Table or Schema names! In the code it is alredy done with QUOTENAME function.' , 1 ;
1920
2021
22+ IF OBJECT_ID (' tempdb..#tmp_extended_remote_data_archive_tables' , ' U' ) IS NOT NULL DROP TABLE #tmp_extended_remote_data_archive_tables;
2123CREATE TABLE #tmp_extended_remote_data_archive_tables(
22- object_id INT NOT NULL
23- , remote_table_name NVARCHAR (128 ) NULL
24- , filter_predicate NVARCHAR (max ) NULL
25- , migration_state TINYINT NULL
24+ object_id INT NOT NULL
25+ , remote_table_name NVARCHAR (128 ) NULL
26+ , filter_predicate NVARCHAR (max ) NULL
27+ , migration_state TINYINT NULL
2628 );
2729
28- IF EXISTS (SELECT 1 FROM master .sys .syscolumns WHERE Name = N ' remote_data_archive_migration_state' AND ID = Object_ID (N ' sys.tables' ))
29- EXECUTE (N' INSERT INTO #tmp_extended_remote_data_archive_tables SELECT rdat.object_id, rdat.remote_table_name,
30- SUBSTRING(rdat.filter_predicate, 2, LEN(rdat.filter_predicate) - 2) as filter_predicate,
31- CASE
32- WHEN tbl.remote_data_archive_migration_state_desc = N'' PAUSED'' THEN 1
33- WHEN tbl.remote_data_archive_migration_state_desc = N'' OUTBOUND'' THEN 3
34- WHEN tbl.remote_data_archive_migration_state_desc = N'' INBOUND'' THEN 4
35- WHEN tbl.remote_data_archive_migration_state_desc = N'' DISABLED'' THEN 0
36- ELSE 0
37- END AS migration_state
38- FROM sys.tables tbl LEFT JOIN sys.remote_data_archive_tables rdat ON rdat.object_id = tbl.object_id
39- WHERE rdat.object_id IS NOT NULL' )
40- ELSE
41- EXECUTE (N' INSERT INTO #tmp_extended_remote_data_archive_tables SELECT rdat.object_id, rdat.remote_table_name,
42- SUBSTRING(rdat.filter_predicate, 2, LEN(rdat.filter_predicate) - 2) as filter_predicate,
43- CASE
44- WHEN rdat.is_migration_paused = 1 AND rdat.migration_direction_desc = N'' OUTBOUND'' THEN 1
45- WHEN rdat.is_migration_paused = 1 AND rdat.migration_direction_desc = N'' INBOUND'' THEN 2
46- WHEN rdat.is_migration_paused = 0 AND rdat.migration_direction_desc = N'' OUTBOUND'' THEN 3
47- WHEN rdat.is_migration_paused = 0 AND rdat.migration_direction_desc = N'' INBOUND'' THEN 4
48- ELSE 0
49- END AS migration_state
50- FROM sys.tables tbl LEFT JOIN sys.remote_data_archive_tables rdat ON rdat.object_id = tbl.object_id
51- WHERE rdat.object_id IS NOT NULL' );
30+ DECLARE @productMajorVersion INT = CAST (SERVERPROPERTY (' ProductMajorVersion' ) AS INT );
31+ IF @productMajorVersion > 12
32+ BEGIN
33+ IF EXISTS (SELECT 1 FROM master .sys .syscolumns WHERE [name] = N ' remote_data_archive_migration_state' AND [id]= Object_ID (N ' sys.tables' ))
34+ EXECUTE (N'
35+ INSERT INTO #tmp_extended_remote_data_archive_tables
36+ SELECT rdat.object_id, rdat.remote_table_name,
37+ SUBSTRING(rdat.filter_predicate, 2, LEN(rdat.filter_predicate) - 2) AS filter_predicate,
38+ CASE WHEN tbl.remote_data_archive_migration_state_desc = N'' PAUSED'' THEN 1
39+ WHEN tbl.remote_data_archive_migration_state_desc = N'' OUTBOUND'' THEN 3
40+ WHEN tbl.remote_data_archive_migration_state_desc = N'' INBOUND'' THEN 4
41+ WHEN tbl.remote_data_archive_migration_state_desc = N'' DISABLED'' THEN 0
42+ ELSE 0
43+ END AS migration_state
44+ FROM sys.tables tbl LEFT JOIN sys.remote_data_archive_tables rdat ON rdat.object_id = tbl.object_id
45+ WHERE rdat.object_id IS NOT NULL;
46+ ' )
47+ ELSE
48+ EXECUTE (N'
49+ INSERT INTO #tmp_extended_remote_data_archive_tables
50+ SELECT rdat.object_id, rdat.remote_table_name,
51+ SUBSTRING(rdat.filter_predicate, 2, LEN(rdat.filter_predicate) - 2) AS filter_predicate,
52+ CASE WHEN rdat.is_migration_paused = 1 AND rdat.migration_direction_desc = N'' OUTBOUND'' THEN 1
53+ WHEN rdat.is_migration_paused = 1 AND rdat.migration_direction_desc = N'' INBOUND'' THEN 2
54+ WHEN rdat.is_migration_paused = 0 AND rdat.migration_direction_desc = N'' OUTBOUND'' THEN 3
55+ WHEN rdat.is_migration_paused = 0 AND rdat.migration_direction_desc = N'' INBOUND'' THEN 4
56+ ELSE 0
57+ END AS migration_state
58+ FROM sys.tables tbl LEFT JOIN sys.remote_data_archive_tables rdat ON rdat.object_id = tbl.object_id
59+ WHERE rdat.object_id IS NOT NULL
60+ ' );
61+ END ;
5262
53- SELECT tbl .NAME
54- AS
55- [Name]
63+ SELECT tbl .name AS [Name]
64+ ,SCHEMA_NAME (tbl .schema_id ) AS [Schema]
5665 ,tbl .object_id
57- AS [ID]
58- ,tbl .create_date
59- AS [CreateDate]
60- ,tbl .modify_date
61- AS [DateLastModified]
62- ,ISNULL (stbl .NAME , N ' ' ) AS [Owner]
63- ,CAST (CASE
64- WHEN tbl .principal_id IS NULL THEN 1
65- ELSE 0
66- END AS BIT ) AS [IsSchemaOwned]
67- ,SCHEMA_NAME (tbl .schema_id )
68- AS [Schema]
66+ ,tbl .create_date AS [CreateDate]
67+ ,tbl .modify_date AS [DateLastModified]
68+ ,ISNULL (stbl .name , N ' ' ) AS [Owner]
69+ ,CAST (CASE WHEN tbl .principal_id IS NULL THEN 1 ELSE 0 END AS BIT ) AS [IsSchemaOwned]
6970 ,CAST (CASE
7071 WHEN tbl .is_ms_shipped = 1 THEN 1
7172 WHEN (SELECT major_id
7273 FROM sys .extended_properties
7374 WHERE major_id = tbl .object_id
7475 AND minor_id = 0
7576 AND class = 1
76- AND NAME = N ' microsoft_database_tools_support' ) IS
77+ AND name = N ' microsoft_database_tools_support' ) IS
7778 NOT NULL
78- THEN
79- 1
79+ THEN 1
8080 ELSE 0
8181 END AS BIT ) AS [IsSystemObject]
8282 ,CAST (Objectproperty (tbl .object_id , N ' HasAfterTrigger' ) AS BIT ) AS [HasAfterTrigger]
@@ -90,39 +90,26 @@ SELECT tbl.NAME
9090 ,CAST (CASE idx .type WHEN 0 THEN 1 ELSE 0 END AS BIT ) AS [HasHeapIndex]
9191 ,tbl .uses_ansi_nulls AS [AnsiNullsStatus]
9292 ,CAST (ISNULL (Objectproperty (tbl .object_id , N ' IsQuotedIdentOn' ), 0 ) AS BIT ) AS [QuotedIdentifierStatus]
93- ,CAST (0 AS BIT )
94- AS [FakeSystemTable]
95- ,ISNULL (dstext .NAME , N ' ' )
96- AS [TextFileGroup]
97- ,CAST (tbl .is_memory_optimized AS BIT )
98- AS [IsMemoryOptimized]
99- ,CASE
100- WHEN ( tbl .durability = 1 ) THEN 0
101- ELSE 1
102- END
103- AS [Durability]
104- ,tbl .is_replicated
105- AS [Replicated]
106- ,tbl .lock_escalation
107- AS [LockEscalation]
93+ ,CAST (0 AS BIT ) AS [FakeSystemTable]
94+ ,ISNULL (dstext .name , N ' ' ) AS [TextFileGroup]
95+ ,CAST (tbl .is_memory_optimized AS BIT ) AS [IsMemoryOptimized]
96+ ,CASE WHEN ( tbl .durability = 1 ) THEN 0 ELSE 1 END AS [Durability]
97+ ,tbl .is_replicated AS [Replicated]
98+ ,tbl .lock_escalation AS [LockEscalation]
10899 ,CAST (CASE
109100 WHEN ctt .object_id IS NULL THEN 0
110101 ELSE 1
111102 END AS BIT )
112103 AS [ChangeTrackingEnabled]
113- ,CAST (ISNULL (ctt .is_track_columns_updated_on , 0 ) AS BIT )
114- AS
115- [TrackColumnsUpdatedEnabled]
116- ,tbl .is_filetable
117- AS [IsFileTable]
118- ,ISNULL (ft .directory_name , N ' ' )
119- AS [FileTableDirectoryName]
104+ ,CAST (ISNULL (ctt .is_track_columns_updated_on , 0 ) AS BIT ) AS [TrackColumnsUpdatedEnabled]
105+ ,tbl .is_filetable AS [IsFileTable]
106+ ,ISNULL (ft .directory_name , N ' ' ) AS [FileTableDirectoryName]
120107 ,ISNULL (ft .filename_collation_name , N ' ' )
121108 AS [FileTableNameColumnCollation]
122109 ,CAST (ISNULL (ft .is_enabled , 0 ) AS BIT )
123110 AS [FileTableNamespaceEnabled]
124111 ,CASE
125- WHEN ' PS' = dsidx .type THEN dsidx .NAME
112+ WHEN ' PS' = dsidx .type THEN dsidx .name
126113 ELSE N ' '
127114 END
128115 AS [PartitionScheme]
@@ -132,56 +119,49 @@ SELECT tbl.NAME
132119 END AS BIT )
133120 AS [IsPartitioned]
134121 ,CASE
135- WHEN ' FD' = dstbl .type THEN dstbl .NAME
122+ WHEN ' FD' = dstbl .type THEN dstbl .name
136123 ELSE N ' '
137124 END
138125 AS [FileStreamFileGroup]
139126 ,CASE
140- WHEN ' PS' = dstbl .type THEN dstbl .NAME
127+ WHEN ' PS' = dstbl .type THEN dstbl .name
141128 ELSE N ' '
142129 END
143130 AS [FileStreamPartitionScheme]
144- ,CAST (CASE idx .type
131+ ,CAST (CASE idx .type
145132 WHEN 5 THEN 1
146133 ELSE 0
147134 END AS BIT )
148135 AS [HasClusteredColumnStoreIndex]
149- ,CAST (CASE tbl .temporal_type
150- WHEN 2 THEN 1
151- ELSE 0
152- END AS BIT )
153- AS [IsSystemVersioned]
154- ,CAST (ISNULL (historyTable .NAME , N ' ' ) AS SYSNAME )
155- AS [HistoryTableName]
156- ,CAST (ISNULL (SCHEMA_NAME (historyTable .schema_id ), N ' ' ) AS SYSNAME )
157- AS
158- [HistoryTableSchema]
159- ,CAST (ISNULL (historyTable .object_id , 0 ) AS INT )
160- AS [HistoryTableID]
161- ,CAST (CASE
162- WHEN periods .start_column_id IS NULL THEN 0
163- ELSE 1
164- END AS BIT )
165- AS [HasSystemTimePeriod]
166- ,CAST (ISNULL ((SELECT cols .NAME
167- FROM sys .columns cols
168- WHERE periods .object_id = tbl .object_id
169- AND cols .object_id = tbl .object_id
170- AND cols .column_id = periods .start_column_id ), N ' ' )
171- AS
172- SYSNAME )
173- AS [SystemTimePeriodStartColumn]
174- ,CAST (ISNULL ((SELECT cols .NAME
175- FROM sys .columns cols
176- WHERE periods .object_id = tbl .object_id
177- AND cols .object_id = tbl .object_id
178- AND cols .column_id = periods .end_column_id ), N ' ' ) AS
179- SYSNAME
180- )
181- AS [SystemTimePeriodEndColumn]
182- ,tbl .temporal_type
183- AS [TemporalType]
184- ,CAST (tbl .is_remote_data_archive_enabled AS BIT ) AS [RemoteDataArchiveEnabled]
136+ -- ,CAST(CASE tbl.temporal_type
137+ -- WHEN 2 THEN 1
138+ -- ELSE 0
139+ -- END AS BIT)
140+ -- AS [IsSystemVersioned]
141+ -- ,CAST(ISNULL(historyTable.name, N'') AS SYSNAME) AS [HistoryTableName]
142+ -- ,CAST(ISNULL(SCHEMA_NAME(historyTable.schema_id), N'') AS SYSNAME) AS [HistoryTableSchema]
143+ -- ,CAST(ISNULL(historyTable.object_id, 0) AS INT) AS [HistoryTableID]
144+ -- ,CAST(CASE WHEN periods.start_column_id IS NULL THEN 0
145+ -- ELSE 1
146+ -- END AS BIT) AS [HasSystemTimePeriod]
147+ -- ,CAST(ISNULL((SELECT cols.NAME
148+ -- FROM sys.columns cols
149+ -- WHERE periods.object_id = tbl.object_id
150+ -- AND cols.object_id = tbl.object_id
151+ -- AND cols.column_id = periods.start_column_id), N'')
152+ -- AS
153+ -- SYSNAME)
154+ -- AS [SystemTimePeriodStartColumn]
155+ -- ,CAST(ISNULL((SELECT cols.NAME
156+ -- FROM sys.columns cols
157+ -- WHERE periods.object_id = tbl.object_id
158+ -- AND cols.object_id = tbl.object_id
159+ -- AND cols.column_id = periods.end_column_id), N'') AS
160+ -- SYSNAME
161+ -- )
162+ -- AS [SystemTimePeriodEndColumn]
163+ -- ,tbl.temporal_type AS [TemporalType]
164+ -- ,CAST(tbl.is_remote_data_archive_enabled AS BIT) AS [RemoteDataArchiveEnabled]
185165 ,CAST (ISNULL (rdat .migration_state , 0 ) AS TINYINT ) AS [RemoteDataArchiveDataMigrationState]
186166 ,CAST (rdat .filter_predicate AS VARCHAR (4000 )) AS [RemoteDataArchiveFilterPredicate]
187167 ,CAST (rdat .remote_table_name AS SYSNAME ) AS [RemoteTableName]
@@ -190,9 +170,9 @@ SELECT tbl.NAME
190170 ELSE 1
191171 END AS BIT )
192172 AS [RemoteTableProvisioned]
193- ,CAST (tbl .is_external AS BIT ) AS [IsExternal]
194- ,eds .NAME AS [DataSourceName]
195- ,ISNULL (eff .NAME , N ' ' ) AS [FileFormatName]
173+ -- ,CAST(tbl.is_external AS BIT) AS [IsExternal]
174+ ,eds .name AS [DataSourceName]
175+ ,ISNULL (eff .name , N ' ' ) AS [FileFormatName]
196176 ,ISNULL (et .location , N ' ' ) AS [Location]
197177 ,CASE et .reject_type
198178 WHEN ' VALUE' THEN 0
@@ -205,10 +185,8 @@ SELECT tbl.NAME
205185 ,ISNULL (et .reject_sample_value , - 1 )
206186 AS [RejectSampleValue]
207187FROM sys .tables AS tbl
208- LEFT OUTER JOIN sys .periods AS periods
209- ON periods .object_id = tbl .object_id
210- LEFT OUTER JOIN sys .tables AS historyTable
211- ON historyTable .object_id = tbl .history_table_id
188+ -- LEFT OUTER JOIN sys.periods AS periods ON periods.object_id = tbl.object_id
189+ -- LEFT OUTER JOIN sys.tables AS historyTable ON historyTable.object_id = tbl.history_table_id
212190 LEFT OUTER JOIN sys .database_principals AS stbl
213191 ON stbl .principal_id = ISNULL (tbl .principal_id , (
214192 Objectproperty (tbl .object_id ,
@@ -244,7 +222,5 @@ FROM sys.tables AS tbl
244222 ON eds .data_source_id = et .data_source_id
245223 LEFT OUTER JOIN sys .external_file_formats AS eff
246224 ON eff .file_format_id = et .file_format_id
247- WHERE ( tbl .NAME = @tableName
248- AND SCHEMA_NAME (tbl .schema_id ) = @schemaName );
249-
250- DROP TABLE #tmp_extended_remote_data_archive_tables;
225+ -- WHERE tbl.name = @tableName
226+ -- AND SCHEMA_NAME(tbl.schema_id) = @schemaName;
0 commit comments