@@ -4,9 +4,9 @@ SET QUOTED_IDENTIFIER ON
4
4
GO
5
5
/* [[LICENSE]]*/
6
6
CREATE PROCEDURE [core].[SqlDataComparison]
7
- @ourTableName sysname ,
8
- @theirTableName sysname ,
9
- @defaultDbName sysname = null ,
7
+ @ourTableName internals . FourPartQuotedName , -- 4 part name, all parts quoted, worst case length
8
+ @theirTableName internals . FourPartQuotedName ,
9
+ @default_db_name sysname = null ,
10
10
@map nvarchar (max ) = null ,
11
11
@join nvarchar (max ) = null ,
12
12
@use nvarchar (max ) = null ,
@@ -54,12 +54,12 @@ BEGIN
54
54
DECLARE @our_database sysname
55
55
DECLARE @our_schema sysname
56
56
DECLARE @our_table sysname
57
- DECLARE @our_database_part sysname
58
- DECLARE @our_full_table_name sysname
57
+ DECLARE @our_database_part internals . QuotedServerPlusTableName
58
+ DECLARE @our_full_table_name internals . FourPartQuotedName
59
59
60
60
EXEC @retval = internals .ValidateQualifiedTableName
61
61
@qualified_table_name = @ourTableName,
62
- @defaultDbName = @defaultDbName ,
62
+ @default_db_name = @default_db_name ,
63
63
@server = @our_server OUTPUT ,
64
64
@database = @our_database OUTPUT ,
65
65
@schema = @our_schema OUTPUT ,
87
87
DECLARE @their_database sysname
88
88
DECLARE @their_schema sysname
89
89
DECLARE @their_table sysname
90
- DECLARE @their_database_part sysname
91
- DECLARE @their_full_table_name sysname
90
+ DECLARE @their_database_part internals . QuotedServerPlusTableName
91
+ DECLARE @their_full_table_name internals . FourPartQuotedName
92
92
93
93
-- do not apply default database name to theirs (it becomes more confusing than helpful when user sends db.table instead of db..table by mistake)
94
94
EXEC @retval = internals .ValidateQualifiedTableName
@@ -118,7 +118,7 @@ BEGIN
118
118
*/
119
119
DECLARE @our_columns internals .ColumnsTable
120
120
121
- INSERT INTO @our_columns (column_id, name )
121
+ INSERT INTO @our_columns (column_id, quotedName )
122
122
EXEC @retval = internals .GetColumns
123
123
@database_part = @our_database_part,
124
124
@schema = @our_schema,
@@ -132,7 +132,7 @@ BEGIN
132
132
*/
133
133
DECLARE @use_columns internals .ColumnsTable
134
134
135
- INSERT INTO @use_columns (column_id, name )
135
+ INSERT INTO @use_columns (column_id, quotedName )
136
136
EXEC @retval = internals .ProcessUseParam
137
137
@use = @use,
138
138
@our_columns = @our_columns,
@@ -145,7 +145,7 @@ BEGIN
145
145
*/
146
146
DECLARE @their_columns internals .ColumnsTable
147
147
148
- INSERT INTO @their_columns (column_id, name )
148
+ INSERT INTO @their_columns (column_id, quotedName )
149
149
EXEC @retval = internals .GetColumns
150
150
@database_part = @their_database_part,
151
151
@schema = @their_schema,
@@ -160,7 +160,7 @@ BEGIN
160
160
-- NB @mapped_columns contains local column id with mapped remote column name
161
161
DECLARE @mapped_columns internals .ColumnsTable
162
162
163
- INSERT INTO @mapped_columns (column_id, name )
163
+ INSERT INTO @mapped_columns (column_id, quotedName )
164
164
EXEC @retval = internals .ProcessMapParam
165
165
@map = @map,
166
166
@our_columns = @our_columns,
@@ -191,7 +191,7 @@ BEGIN
191
191
/*
192
192
* Use @join for join instead of table primary keys, if provided
193
193
*/
194
- INSERT INTO @key_columns (column_id, name )
194
+ INSERT INTO @key_columns (column_id, quotedName )
195
195
EXEC @retval = internals .ProcessJoinParam
196
196
@join = @join,
197
197
@use_columns = @use_columns,
@@ -204,7 +204,7 @@ BEGIN
204
204
/*
205
205
* Load our table primary key columns
206
206
*/
207
- INSERT INTO @key_columns (column_id, name )
207
+ INSERT INTO @key_columns (column_id, quotedName )
208
208
EXEC @retval = internals .GetPrimaryKeyColumns
209
209
@database_part = @our_database_part,
210
210
@schema = @our_schema,
@@ -244,7 +244,7 @@ BEGIN
244
244
245
245
SET @i = 0
246
246
SELECT
247
- @join_sql = @join_sql + CASE WHEN @i = 0 THEN ' ON' ELSE ' AND' END + ' [ours].[ ' + kc .name + ' ] = [theirs].[ ' + m .name + ' ] ' + @CRLF,
247
+ @join_sql = @join_sql + CASE WHEN @i = 0 THEN ' ON' ELSE ' AND' END + ' [ours].' + kc .quotedName + ' = [theirs].' + m .quotedName + ' ' + @CRLF,
248
248
@i = @i + 1
249
249
FROM @key_columns kc
250
250
INNER JOIN @mapped_columns m
@@ -265,13 +265,13 @@ BEGIN
265
265
IF @added_rows = 1 OR @changed_rows = 1
266
266
BEGIN
267
267
IF @import > 0
268
- INSERT INTO @identity_columns (column_id, name )
268
+ INSERT INTO @identity_columns (column_id, quotedName )
269
269
EXEC @retval = internals .GetIdentityColumns
270
270
@database_part = @our_database_part,
271
271
@schema = @our_schema,
272
272
@table = @our_table
273
273
ELSE
274
- INSERT INTO @identity_columns (column_id, name )
274
+ INSERT INTO @identity_columns (column_id, quotedName )
275
275
EXEC @retval = internals .GetIdentityColumns
276
276
@database_part = @their_database_part,
277
277
@schema = @their_schema,
@@ -300,7 +300,7 @@ BEGIN
300
300
301
301
SET @sql = @sql + ' INSERT INTO %0 (' + @CRLF
302
302
303
- SELECT @sql = @sql + @TAB + ' [' + CASE WHEN @import > 0 THEN uc .name ELSE m .name END + ' ] ,' + @CRLF
303
+ SELECT @sql = @sql + @TAB + CASE WHEN @import > 0 THEN uc .quotedName ELSE m .quotedName END + ' ,' + @CRLF
304
304
FROM @use_columns uc
305
305
INNER JOIN @mapped_columns m
306
306
ON uc .column_id = m .column_id
@@ -311,7 +311,7 @@ BEGIN
311
311
312
312
SELECT @sql = @sql + ' SELECT' + @CRLF
313
313
314
- SELECT @sql = @sql + @TAB + ' %2.[ ' + CASE WHEN @import > 0 THEN m .name ELSE uc .name END + ' ] ,' + @CRLF
314
+ SELECT @sql = @sql + @TAB + ' %2.' + CASE WHEN @import > 0 THEN m .quotedName ELSE uc .quotedName END + ' ,' + @CRLF
315
315
FROM @use_columns uc
316
316
INNER JOIN @mapped_columns m
317
317
ON uc .column_id = m .column_id
@@ -330,7 +330,7 @@ BEGIN
330
330
SELECT
331
331
@sql = @sql +
332
332
CASE WHEN @i = 0 THEN ' ' ELSE ' AND ' END +
333
- ' %1.[ ' + CASE WHEN @import > 0 THEN kc .name ELSE m .name END + ' ] IS NULL' + @CRLF,
333
+ ' %1.' + CASE WHEN @import > 0 THEN kc .quotedName ELSE m .quotedName END + ' IS NULL' + @CRLF,
334
334
@i = @i + 1
335
335
FROM @key_columns kc
336
336
INNER JOIN @mapped_columns m
@@ -374,7 +374,7 @@ BEGIN
374
374
SELECT
375
375
@sql = @sql +
376
376
CASE WHEN @i = 0 THEN ' ' ELSE ' OR ' END +
377
- ' (%1.[ ' + CASE WHEN @import > 0 THEN kc .name ELSE m .name END + ' ] IS NOT NULL AND %2.[ ' + CASE WHEN @import > 0 THEN m .name ELSE kc .name END + ' ] IS NULL)' + @CRLF,
377
+ ' (%1.' + CASE WHEN @import > 0 THEN kc .quotedName ELSE m .quotedName END + ' IS NOT NULL AND %2.' + CASE WHEN @import > 0 THEN m .quotedName ELSE kc .quotedName END + ' IS NULL)' + @CRLF,
378
378
@i = @i + 1
379
379
FROM @key_columns kc
380
380
INNER JOIN @mapped_columns m
@@ -406,7 +406,11 @@ BEGIN
406
406
407
407
SET @i = 0
408
408
SELECT
409
- @sql = @sql + @TAB + CASE WHEN @i = 0 THEN ' SET ' ELSE @TAB END + ' [' + CASE WHEN @import > 0 THEN uc .name ELSE m .name END + ' ] = %2.[' + CASE WHEN @import > 0 THEN m .name ELSE uc .name END + ' ],' + @CRLF,
409
+ @sql = @sql +
410
+ @TAB + CASE WHEN @i = 0 THEN ' SET ' ELSE @TAB END +
411
+ CASE WHEN @import > 0 THEN uc .quotedName ELSE m .quotedName END + ' = ' +
412
+ ' %2.' + CASE WHEN @import > 0 THEN m .quotedName ELSE uc .quotedName END +
413
+ ' ,' + @CRLF,
410
414
@i = @i + 1
411
415
FROM @use_columns uc
412
416
INNER JOIN @mapped_columns m
@@ -429,9 +433,9 @@ BEGIN
429
433
SELECT
430
434
@sql = @sql +
431
435
CASE WHEN @i = 0 THEN ' ' ELSE ' OR ' END +
432
- ' ([ours].[ ' + uc .name + ' ] IS NULL AND [theirs].[ ' + m .name + ' ] IS NOT NULL)' + @CRLF +
433
- ' OR ([ours].[ ' + uc .name + ' ] IS NOT NULL AND [theirs].[ ' + m .name + ' ] IS NULL)' + @CRLF +
434
- ' OR [ours].[ ' + uc .name + ' ] <> [theirs].[ ' + m .name + ' ] ' + @CRLF,
436
+ ' ([ours].' + uc .quotedName + ' IS NULL AND [theirs].' + m .quotedName + ' IS NOT NULL)' + @CRLF +
437
+ ' OR ([ours].' + uc .quotedName + ' IS NOT NULL AND [theirs].' + m .quotedName + ' IS NULL)' + @CRLF +
438
+ ' OR [ours].' + uc .quotedName + ' <> [theirs].' + m .quotedName + ' ' + @CRLF,
435
439
@i = @i + 1
436
440
FROM @use_columns uc
437
441
INNER JOIN @mapped_columns m
@@ -470,22 +474,22 @@ BEGIN
470
474
IF @interleave = 1
471
475
BEGIN
472
476
SELECT @sql = @sql +
473
- @TAB + ' [ours].[ ' + u . name + ' ] AS [<<< ' + u . name + ' ],' + @CRLF +
474
- @TAB + ' [theirs].[ ' + m .name + ' ] AS [>>> ' + m .name + ' ],' + @CRLF
475
- FROM @use_columns u
477
+ @TAB + ' [ours].' + uc . quotedName + ' AS [<<< ' + uc . quotedName + ' ],' + @CRLF +
478
+ @TAB + ' [theirs].' + m .quotedName + ' AS [>>> ' + m .quotedName + ' ],' + @CRLF
479
+ FROM @use_columns uc
476
480
INNER JOIN @mapped_columns m
477
481
ON u .column_id = m .column_id
478
482
END
479
483
ELSE
480
484
BEGIN
481
485
SET @sql = @sql + ' '' OURS <<<'' AS [ ],' + @CRLF
482
486
483
- SELECT @sql = @sql + @TAB + ' [ours].[ ' + name + ' ] ,' + @CRLF
487
+ SELECT @sql = @sql + @TAB + ' [ours].' + quotedName + ' ,' + @CRLF
484
488
FROM @our_columns
485
489
486
490
SET @sql = @sql + @TAB + ' '' THEIRS >>>'' AS [ ],' + @CRLF
487
491
488
- SELECT @sql = @sql + @TAB + ' [theirs].[ ' + name + ' ] ,' + @CRLF
492
+ SELECT @sql = @sql + @TAB + ' [theirs].' + quotedName + ' ,' + @CRLF
489
493
FROM @their_columns
490
494
END
491
495
@@ -503,18 +507,18 @@ BEGIN
503
507
SELECT
504
508
@sql = @sql +
505
509
CASE WHEN @i = 0 THEN ' ' ELSE ' OR ' END +
506
- ' ([ours].[ ' + kc .name + ' ] IS NULL AND [theirs].[ ' + m .name + ' ] IS NOT NULL)' + @CRLF +
507
- ' OR ([ours].[ ' + kc .name + ' ] IS NOT NULL AND [theirs].[ ' + m .name + ' ] IS NULL)' + @CRLF,
510
+ ' ([ours].' + kc .quotedName + ' IS NULL AND [theirs].' + m .quotedName + ' IS NOT NULL)' + @CRLF +
511
+ ' OR ([ours].' + kc .quotedName + ' IS NOT NULL AND [theirs].' + m .quotedName + ' IS NULL)' + @CRLF,
508
512
@i = @i + 1
509
513
FROM @key_columns kc
510
514
INNER JOIN @mapped_columns m
511
515
ON kc .column_id = m .column_id
512
516
513
517
SELECT
514
518
@sql = @sql +
515
- ' OR ([ours].[ ' + uc .name + ' ] IS NULL AND [theirs].[ ' + m .name + ' ] IS NOT NULL)' + @CRLF +
516
- ' OR ([ours].[ ' + uc .name + ' ] IS NOT NULL AND [theirs].[ ' + m .name + ' ] IS NULL)' + @CRLF +
517
- ' OR [ours].[ ' + uc .name + ' ] <> [theirs].[ ' + m .name + ' ] ' + @CRLF
519
+ ' OR ([ours].' + uc .quotedName + ' IS NULL AND [theirs].' + m .quotedName + ' IS NOT NULL)' + @CRLF +
520
+ ' OR ([ours].' + uc .quotedName + ' IS NOT NULL AND [theirs].' + m .quotedName + ' IS NULL)' + @CRLF +
521
+ ' OR [ours].' + uc .quotedName + ' <> [theirs].' + m .quotedName + ' ' + @CRLF
518
522
FROM @use_columns uc
519
523
INNER JOIN @mapped_columns m
520
524
ON uc .column_id = m .column_id
0 commit comments