Wednesday, February 22, 2012

Compare 2 databases indexes

Here  SR91005 is one database ,SR91006is 2nd Database
 

SELECT
tbl.name tablename,
i.name AS [Name],

'Server[@Name=' + quotename(CAST(serverproperty(N'Servername') AS sysname),'''') + ']' + '/Database[@Name=' +quotename(db_name(),'''') + ']' + '/Table[@Name=' + quotename(tbl.name,'''') + ' and @Schema=' +quotename(SCHEMA_NAME(tbl.schema_id),'''') + ']' + '/Index[@Name=' + quotename(i.name,'''') + ']' AS [Urn],

CAST(CASE i.index_id WHEN 1 THEN 1 ELSE 0 END AS bit) AS [IsClustered],
i
.is_unique AS [IsUnique],

CAST(case when i.type=3 then 1 else 0 end AS bit) AS [IsXmlIndex],

case UPPER(ISNULL(xi.secondary_type,'')) when 'P' then 1 when 'V' then 2 when 'R' then 3 else 0 end AS [SecondaryXmlIndexType]
FROM
SR91005.sys.tables AS tbl

INNER JOIN SR91005.sys.indexes AS i ON (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tbl.object_id)

LEFT OUTER JOIN SR91005.sys.xml_indexes AS xi ON xi.object_id = i.object_id AND xi.index_id = i.index_id
WHERE
NOT EXISTS (SELECT 1

FROM SR91006.sys.tables AS tbl2

INNER JOIN SR91006.sys.indexes AS i2 ON (i2.index_id > 0 and i2.is_hypothetical = 0) AND (i2.object_id=tbl2.object_id)

WHERE tbl2.name = tbl.name

AND i2.name = i.name)
order
by tbl.name

No comments:

Post a Comment