Skip to content

Commit 6931286

Browse files
author
Vladyslav Danylov
committed
[PAA-1335] Changed SQL script to support different schemes in one database.
1 parent 2de3ff5 commit 6931286

1 file changed

Lines changed: 58 additions & 48 deletions

File tree

DataFresh/Resources/PrepareDataFresh.sql

Lines changed: 58 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@ IF EXISTS (SELECT * FROM [DBO].SYSOBJECTS WHERE ID = Object_ID(N'[DBO].[df_Table
1818
DROP PROCEDURE [dbo].[df_TableDataImport]
1919
GO
2020

21-
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[df_ChangeTracking]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
22-
CREATE TABLE [dbo].[df_ChangeTracking]
21+
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[df_ChangeTracking]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
22+
DROP TABLE [dbo].[df_ChangeTracking]
23+
GO
24+
25+
CREATE TABLE [dbo].[df_ChangeTracking]
2326
(
24-
[TABLENAME] sysname
27+
[TABLENAME] sysname,
28+
[TABLESCHEMA] sysname
2529
)
2630
GO
2731

@@ -33,55 +37,57 @@ AS
3337

3438
DECLARE @sql NVARCHAR(4000)
3539
DECLARE @TableName VARCHAR(255)
40+
DECLARE @TableSchema VARCHAR(255)
3641

37-
SELECT DISTINCT TableName INTO #ChangedTables FROM df_ChangeTracking
42+
SELECT DISTINCT TableName, TableSchema INTO #ChangedTables FROM df_ChangeTracking
3843

3944
TRUNCATE TABLE df_ChangeTracking
4045

4146
DECLARE Table_Cursor INSENSITIVE SCROLL CURSOR FOR
42-
SELECT [tablename] from #ChangedTables
47+
SELECT [tablename], [tableschema] from #ChangedTables
4348
UNION
4449
SELECT DISTINCT
45-
OBJECT_NAME(fkeyid) AS Referenced_Table
50+
OBJECT_NAME(fkeyid) AS Referenced_Table_Name,
51+
OBJECT_SCHEMA_NAME(fkeyid) AS Referenced_Table_Schema
4652
FROM
4753
sysreferences sr
4854
INNER JOIN #ChangedTables ct ON sr.rkeyid = OBJECT_ID(ct.tablename)
4955

5056
OPEN Table_Cursor
5157

5258
-- Deactivate Constrains for tables referencing changed tables
53-
FETCH NEXT FROM Table_Cursor INTO @TableName
59+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
5460

5561
WHILE (@@Fetch_Status = 0)
5662
BEGIN
57-
SET @sql = N'Alter Table [' + @TableName + '] NOCHECK CONSTRAINT ALL'
63+
SET @sql = N'Alter Table [' + @TableSchema + '].[' + @TableName + '] NOCHECK CONSTRAINT ALL'
5864
EXEC sp_executesql @sql
5965

60-
FETCH NEXT FROM Table_Cursor INTO @TableName
66+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
6167
END
6268

6369
-- Delete All data from Changed Tables and Refill
6470
DECLARE ChangedTable_Cursor CURSOR FOR
65-
SELECT [tablename] FROM #ChangedTables WHERE tablename not in('df_ChangeTracking', 'dr_DeltaVersion')
71+
SELECT [tablename], [tableschema] FROM #ChangedTables WHERE tablename not in('df_ChangeTracking', 'dr_DeltaVersion')
6672

6773
OPEN ChangedTable_Cursor
68-
FETCH NEXT FROM ChangedTable_Cursor INTO @TableName
74+
FETCH NEXT FROM ChangedTable_Cursor INTO @TableName, @TableSchema
6975
WHILE (@@Fetch_Status = 0)
7076
BEGIN
7177
PRINT @TableName
72-
SET @sql = N'DELETE [' + @TableName + ']; DELETE df_ChangeTracking WHERE TableName=''' + @TableName + ''''
78+
SET @sql = N'DELETE [' + @TableSchema + '].[' + @TableName + ']; DELETE FROM df_ChangeTracking WHERE TableName=''' + @TableName + ''' and TableSchema=''' + @TableSchema + ''''
7379
EXEC sp_executesql @sql
7480

75-
SET @sql = N'IF(SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE table_name = ''' + @TableName + ''' AND IDENT_SEED(TABLE_NAME) IS NOT NULL) > 0
81+
SET @sql = N'IF(SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = ''' + @TableSchema + ''' AND table_name = ''' + @TableName + ''' AND IDENT_SEED(TABLE_NAME) IS NOT NULL) > 0
7682
BEGIN
77-
DBCC CHECKIDENT ([' + @TableName + '], RESEED, 0)
83+
DBCC CHECKIDENT ([' + @TableSchema + '.' + @TableName + '], RESEED, 0)
7884
END'
7985

8086
EXEC sp_executesql @sql
8187

8288

83-
SET @sql = N'BULK INSERT [' + @TableName + ']
84-
FROM ''' + @BasePath + @TableName + '.df''
89+
SET @sql = N'BULK INSERT [' + @TableSchema + '].[' + @TableName + ']
90+
FROM ''' + @BasePath + @TableSchema + '.' + @TableName + '.df''
8591
WITH
8692
(
8793
KEEPIDENTITY,
@@ -90,19 +96,19 @@ AS
9096
)'
9197
EXEC sp_executesql @sql
9298

93-
FETCH NEXT FROM ChangedTable_Cursor INTO @TableName
99+
FETCH NEXT FROM ChangedTable_Cursor INTO @TableName, @TableSchema
94100
END
95101
CLOSE ChangedTable_Cursor
96102
DEALLOCATE ChangedTable_Cursor
97103

98104
-- ReEnable Constrants for All Tables
99-
FETCH FIRST FROM Table_Cursor INTO @TableName
105+
FETCH FIRST FROM Table_Cursor INTO @TableName, @TableSchema
100106
WHILE (@@Fetch_Status = 0)
101107
BEGIN
102-
SET @sql = N'Alter Table [' + @TableName + '] CHECK CONSTRAINT ALL'
108+
SET @sql = N'Alter Table [' + @TableSchema + '].[' + @TableName + '] CHECK CONSTRAINT ALL'
103109
EXEC sp_executesql @sql
104110

105-
FETCH NEXT FROM Table_Cursor INTO @TableName
111+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
106112
END
107113
CLOSE Table_Cursor
108114
DEALLOCATE Table_Cursor
@@ -115,33 +121,35 @@ AS
115121
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[df_ChangeTracking]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
116122
CREATE TABLE [df_ChangeTracking]
117123
(
118-
[TABLENAME] sysname
124+
[TABLENAME] sysname,
125+
[TABLESCHEMA] sysname
119126
)
120127

121128
DECLARE @sql NVARCHAR(4000)
122129
DECLARE @TableName VARCHAR(255)
130+
DECLARE @TableSchema VARCHAR(255)
123131

124132
DECLARE Table_Cursor CURSOR FOR
125-
SELECT [table_name] FROM information_schema.tables WHERE table_type = 'BASE TABLE'
133+
SELECT [table_name], [table_schema] FROM information_schema.tables WHERE table_type = 'BASE TABLE'
126134

127135
OPEN Table_Cursor
128-
FETCH NEXT FROM Table_Cursor INTO @TableName
136+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
129137

130138
WHILE (@@Fetch_Status = 0)
131139
BEGIN
132-
SET @sql = N'IF EXISTS (SELECT * FROM dbo.SYSOBJECTS WHERE ID = Object_ID(N''[dbo].[trig_df_ChangeTracking_' + @TableName + ']'') AND OBJECTPROPERTY(ID, N''IsTrigger'') = 1)
133-
DROP TRIGGER [dbo].[trig_df_ChangeTracking_' + @TableName + ']'
140+
SET @sql = N'IF EXISTS (SELECT * FROM dbo.SYSOBJECTS WHERE ID = Object_ID(N''[' + @TableSchema + '].[trig_df_ChangeTracking_' + @TableName + ']'') AND OBJECTPROPERTY(ID, N''IsTrigger'') = 1)
141+
DROP TRIGGER [' + @TableSchema + '].[trig_df_ChangeTracking_' + @TableName + ']'
134142
EXEC sp_executesql @sql
135143

136-
SET @sql = N'CREATE TRIGGER [dbo].[trig_df_ChangeTracking_' + @TableName + '] on [' + @TableName + '] for insert, update, delete
144+
SET @sql = N'CREATE TRIGGER [' + @TableSchema + '].[trig_df_ChangeTracking_' + @TableName + '] on [' + @TableSchema + '].[' + @TableName + '] for insert, update, delete
137145
as
138146
SET NOCOUNT ON
139-
INSERT INTO df_ChangeTracking (tablename) VALUES (''' + @TableName + ''')
147+
INSERT INTO df_ChangeTracking (tablename, tableschema) VALUES (''' + @TableName + ''', ''' + @TableSchema + ''')
140148
SET NOCOUNT OFF'
141149

142150
EXEC sp_executesql @sql
143151

144-
FETCH NEXT FROM Table_Cursor INTO @TableName
152+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
145153

146154
END
147155
CLOSE Table_Cursor
@@ -163,7 +171,7 @@ AS
163171
DECLARE @CMD NVARCHAR(4000)
164172

165173
DECLARE Table_Cursor CURSOR FOR
166-
SELECT N'bcp "' + DB_NAME() + '.dbo.[' + Table_Name + ']" out "' + @BasePath + Table_Name + '.df" -n -k -E -C 1252 -S ' + @@ServerName + ' -T' FROM Information_Schema.tables WHERE table_type = 'BASE TABLE'
174+
SELECT N'bcp "' + DB_NAME() + '.[' + Table_Schema + '].[' + Table_Name + ']" out "' + @BasePath + Table_Schema + '.' + Table_Name + '.df" -n -k -E -C 1252 -S ' + @@ServerName + ' -T' FROM Information_Schema.tables WHERE table_type = 'BASE TABLE'
167175

168176
OPEN Table_Cursor
169177
FETCH NEXT FROM Table_Cursor INTO @CMD
@@ -187,39 +195,40 @@ AS
187195

188196
DECLARE @sql NVARCHAR(4000)
189197
DECLARE @TableName VARCHAR(255)
198+
DECLARE @TableSchema VARCHAR(255)
190199

191-
SELECT Table_Name as TableName INTO #UserTables FROM Information_Schema.tables WHERE table_type = 'BASE TABLE'
200+
SELECT Table_Name as TableName, Table_Schema as TableSchema INTO #UserTables FROM Information_Schema.tables WHERE table_type = 'BASE TABLE'
192201

193202
DECLARE Table_Cursor INSENSITIVE SCROLL CURSOR FOR
194-
SELECT [tablename] FROM #UserTables
203+
SELECT [tablename], [tableschema] FROM #UserTables
195204

196205
OPEN Table_Cursor
197206

198207
-- Deactivate Constrains for tables referencing changed tables
199-
FETCH NEXT FROM Table_Cursor INTO @TableName
208+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
200209

201210
WHILE (@@Fetch_Status = 0)
202211
BEGIN
203-
SET @sql = N'Alter Table [' + @TableName + '] NOCHECK CONSTRAINT ALL'
212+
SET @sql = N'Alter Table [' + @TableSchema + '].[' + @TableName + '] NOCHECK CONSTRAINT ALL'
204213
EXEC sp_executesql @sql
205214

206-
FETCH NEXT FROM Table_Cursor INTO @TableName
215+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
207216
END
208217

209218
-- Delete All data from Changed Tables and Refill
210219
DECLARE UserTable_Cursor CURSOR FOR
211-
SELECT [tablename] FROM #UserTables WHERE tablename not in ('df_ChangeTracking', 'dr_DeltaVersion')
220+
SELECT [tablename], [tableschema] FROM #UserTables WHERE tablename not in ('df_ChangeTracking', 'dr_DeltaVersion') and tableschema <> 'dbo'
212221

213222
OPEN UserTable_Cursor
214223

215-
FETCH NEXT FROM UserTable_Cursor INTO @TableName
224+
FETCH NEXT FROM UserTable_Cursor INTO @TableName, @TableSchema
216225
WHILE (@@Fetch_Status = 0)
217226
BEGIN
218-
PRINT @TableName
219-
SET @sql = N'DELETE [' + @TableName + ']'
227+
PRINT @TableSchema + '.' + @TableName
228+
SET @sql = N'DELETE [' + @TableSchema + '].[' + @TableName + ']'
220229
EXEC sp_executesql @sql
221230

222-
SET @sql = N'BULK INSERT [' + @TableName + ']
231+
SET @sql = N'BULK INSERT [' + @TableSchema + '].[' + @TableName + ']
223232
FROM ''' + @BasePath + @TableName + '.df''
224233
WITH
225234
(
@@ -229,20 +238,20 @@ AS
229238
)'
230239
EXEC sp_executesql @sql
231240

232-
FETCH NEXT FROM UserTable_Cursor INTO @TableName
241+
FETCH NEXT FROM UserTable_Cursor INTO @TableName, @TableSchema
233242

234243
END
235244
CLOSE UserTable_Cursor
236245
DEALLOCATE UserTable_Cursor
237246

238247
-- ReEnable Constrants for All Tables
239-
FETCH FIRST FROM Table_Cursor INTO @TableName
248+
FETCH FIRST FROM Table_Cursor INTO @TableName, @TableSchema
240249
WHILE (@@Fetch_Status = 0)
241250
BEGIN
242-
SET @sql = N'Alter Table [' + @TableName + '] CHECK CONSTRAINT ALL'
251+
SET @sql = N'Alter Table [' + @TableSchema + '].[' + @TableName + '] CHECK CONSTRAINT ALL'
243252
EXEC sp_executesql @sql
244253

245-
FETCH NEXT FROM Table_Cursor INTO @TableName
254+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
246255
END
247256

248257
CLOSE Table_Cursor
@@ -254,21 +263,22 @@ CREATE PROCEDURE dbo.[df_ChangeTrackingTriggerRemove]
254263
AS
255264
DECLARE @sql NVARCHAR(4000)
256265
DECLARE @TableName VARCHAR(255)
266+
DECLARE @TableSchema VARCHAR(255)
257267

258268
DECLARE Table_Cursor CURSOR FOR
259-
SELECT [table_name] FROM information_schema.tables WHERE table_type = 'BASE TABLE'
269+
SELECT [table_name], [table_schema] FROM information_schema.tables WHERE table_type = 'BASE TABLE'
260270

261271
OPEN Table_Cursor
262-
FETCH NEXT FROM Table_Cursor INTO @TableName
272+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
263273

264274
WHILE (@@Fetch_Status = 0)
265275
BEGIN
266-
SET @sql = N'IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = Object_ID(N''[dbo].[trig_df_ChangeTracking_' + @TableName + ']'') AND OBJECTPROPERTY(ID, N''IsTrigger'') = 1)
267-
DROP TRIGGER [dbo].[trig_df_ChangeTracking_' + @TableName + ']'
276+
SET @sql = N'IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = Object_ID(N''[' + @TableSchema + '].[trig_df_ChangeTracking_' + @TableName + ']'') AND OBJECTPROPERTY(ID, N''IsTrigger'') = 1)
277+
DROP TRIGGER [' + @TableSchema + '].[trig_df_ChangeTracking_' + @TableName + ']'
268278

269279
EXEC sp_executesql @sql
270280

271-
FETCH NEXT FROM Table_Cursor INTO @TableName
281+
FETCH NEXT FROM Table_Cursor INTO @TableName, @TableSchema
272282

273283
END
274284
CLOSE Table_Cursor

0 commit comments

Comments
 (0)