|
|
|
Title:
|
Compare Databases in Sql
|
Language:
|
SQL
|
|
Description:
|
compare 2 databases using query analizer (sql studio)
|
Views:
|
433
|
|
Author:
|
Joel Meikle
|
Date Added:
|
12/23/2008
|
Copy
|
Code
|
|
/***
Replace with
[MASTER_DATABASE] you master database as a base comparison
[COMPARE_DATABASENAME] database to compare to
Hint: use the find & replace function on the above
***/
create table #tempdb1 (
[ObjectName] varchar(128),
[FieldName] varchar (128),
[dataType] varchar(128),
[Is_Nullable] varchar(3),
[FieldSize] int,
[CollationName] varchar(128)
)
GO
insert into #tempdb1
select DB1.[TABLE_NAME], DB1.[COLUMN_NAME], DB1.[DATA_TYPE],
DB1.[IS_NULLABLE], DB1.[CHARACTER_MAXIMUM_LENGTH], DB1.[COLLATION_NAME]
FROM [MASTER_DATABASE].INFORMATION_SCHEMA.COLUMNS AS DB1
GO
-- SELECT * FROM #tempdb1
-- drop table #tempdb1
create table #tempdb2 (
[ObjectName] varchar(128),
[FieldName] varchar (128),
[dataType] varchar(128),
[Is_Nullable] varchar(3),
[FieldSize] int,
[CollationName] varchar(128)
)
GO
insert into #tempdb2
select DB1.[TABLE_NAME], DB1.[COLUMN_NAME], DB1.[DATA_TYPE],
DB1.[IS_NULLABLE], DB1.[CHARACTER_MAXIMUM_LENGTH], DB1.[COLLATION_NAME]
FROM [COMPARE_DATABASENAME].INFORMATION_SCHEMA.COLUMNS AS DB1
GO
-- select * from #tempdb2
-- now compare the two, db1 should be the master (most recent database).
SELECT DB1.ObjectName, DB1.FieldName, DB1.dataType as DB1_dataType, DB2.dataType as DB2_dataType,
DB1.Is_Nullable, DB1.FieldSize AS DB1_Size, DB2.FieldSize AS DB2_Size,
DB1.CollationName AS DB1_Colat, DB2.CollationName AS DB2_Colat
FROM #tempdb1 AS DB1
LEFT JOIN #tempdb2 AS DB2
ON DB1.ObjectName = DB2.ObjectName
AND
DB1.FieldName = DB2.FieldName
WHERE DB2.ObjectName Is Null
OR DB2.FieldName Is Null
OR DB1.dataType <> DB2.dataType
OR DB1.CollationName <> DB2.CollationName
GO
/** run this to clean up when done
drop table #tempdb1
drop table #tempdb2
GO
**/
|
|
Usage
|
paste into sql pane, replace values & execute
|
|
Notes
|
|
will display list of results for schema differences
|
|
|