Dev*_*Dev 2 sql sql-server-2008
我正在使用SQL Server 2008 R2.
我创建了两个不同的数据库Master和Test.它们在开始时都具有相同的表和列,但随后master用于某些稳定的环境,test并由我用于持续开发.
现在由于开发,我更改了一些列的数据类型,向表中添加了一些新列,删除了一些列,添加了一些新表并删除了.现在我想做Master同样的事情test.我无法删除并重新创建,Master因为它包含一些敏感的实时数据.所以,我需要每一个表比较master与test同列名,数据类型,约束和长度一起.有什么解决方案吗?
解决了我自己:
SELECT
T.[name] AS [table_name], AC.[name] AS [column_name],
TY.[name] AS system_data_type
FROM [master].sys.[tables] AS T
INNER JOIN [master].sys.[all_columns] AC ON T.[object_id] = AC.[object_id]
INNER JOIN [master].sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id]
EXCEPT
SELECT
T.[name] AS [table_name], AC.[name] AS [column_name],
TY.[name] AS system_data_type
FROM test.sys.[tables] AS T
INNER JOIN test.sys.[all_columns] AC ON T.[object_id] = AC.[object_id]
INNER JOIN test.sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id]
Run Code Online (Sandbox Code Playgroud)
这将为您提供列的列表以及表名,列名和数据类型,这些列在主服务器中但不存在或与测试不同.
| 归档时间: |
|
| 查看次数: |
14294 次 |
| 最近记录: |