Sql 识别跨数据库的潜在隐式转换
如何修改以下查询以识别数据库之间可能的隐式转换(对于共享相同名称的列) 我目前拥有的一切都有效,但只适用于您当前所在的任何数据库 我希望看到同一服务器上每个数据库的所有潜在匹配。以下是我目前正在处理的问题:Sql 识别跨数据库的潜在隐式转换,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,如何修改以下查询以识别数据库之间可能的隐式转换(对于共享相同名称的列) 我目前拥有的一切都有效,但只适用于您当前所在的任何数据库 我希望看到同一服务器上每个数据库的所有潜在匹配。以下是我目前正在处理的问题: SELECT DISTINCT @@SERVERNAME AS [server_name] , DB_NAME() AS [database_name] , [left].[COLUMN_NAME] AS [column_name] ,
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]
你是说同一台服务器上的db?没错。我将更新我的问题以使其更清楚。只是一个提示:在您的
内部联接中,…
包括和[left].[TABLE\u NAME][right].[TABLE\u NAME]
以避免自我比较。只需添加
即可获取任何特定数据库的架构。不幸的是,SQLServer没有提供覆盖服务器上所有数据库的类似视图。