识别跨数据库的潜在隐式转换

时间:2015-10-02 15:21:46

标签: sql sql-server sql-server-2012

如何修改以下查询以识别跨数据库的可能的隐式转换(对于共享相同名称的列)?

我目前的工作原理,但仅适用于您目前所在的数据库。

我想要的是查看同一服务器上每个数据库的所有潜在匹配项。以下是我目前正在使用的内容:

SELECT DISTINCT
        @@SERVERNAME AS [server_name] ,
        DB_NAME() AS [database_name] ,
        [left].[COLUMN_NAME] AS [column_name] ,
        [left].[TABLE_SCHEMA] AS [table_schema] ,
        [left].[TABLE_NAME] AS [table_name] ,
        [left].[DATA_TYPE] AS [data_type] ,
        [left].[CHARACTER_MAXIMUM_LENGTH] AS [character_maximum_length] ,
        [left].[NUMERIC_PRECISION] AS [numeric_precision] ,
        [left].[NUMERIC_SCALE] AS [numeric_scale]
FROM    [INFORMATION_SCHEMA].[COLUMNS] [left]
        INNER JOIN [INFORMATION_SCHEMA].[COLUMNS] [right] ON [left].[COLUMN_NAME] = [right].[COLUMN_NAME]
WHERE   ( ( [left].[DATA_TYPE] != [right].[DATA_TYPE] )
          OR ( [left].[CHARACTER_MAXIMUM_LENGTH] != [right].[CHARACTER_MAXIMUM_LENGTH] )
          OR ( [left].[NUMERIC_PRECISION] != [right].[NUMERIC_PRECISION] )
          OR ( [left].[NUMERIC_SCALE] != [right].[NUMERIC_SCALE] )
        )
ORDER BY [left].[COLUMN_NAME] ,
        [left].[TABLE_SCHEMA] ,
        [left].[TABLE_NAME]                         

0 个答案:

没有答案