在SQLServer中,您可以存储来自包含数据库结构的不同sys表的结果。然后,在新版本之后,您可以编写一个查询,在该查询中,您可以将新sys表上的旧相关sys表完全外部联接,并且只保留导致旧sys表中为null或新sys表中为null的行。 旧sys表中的null表示在新版本中添加了某些内容,或者您加入的值已更改。 new sys表中的null表示在新版本中删除了某些内容,或者您加入的值已更改。 我假设不同的sql版本有类似于前面提到的sys表的内容。 我用sys.tables做了一个例子。这同样适用于列、模式、函数、过程等
CREATE TABLE SysTablesOld (Name varchar(200));
CREATE TABLE DeleteMe (Test int);
CREATE TABLE ChangeMe (Test int);
CREATE TABLE NoChange (Test int);
INSERT INTO SysTablesOld (Name)
SELECT Name
FROM sys.tables;
-- changes in the new release
DROP TABLE DeleteMe;
CREATE TABLE AddMe (Test int);
EXEC sp_rename 'ChangeMe', 'ChangedMe';
SELECT
old.Name AS Old
, new.Name AS New
FROM sys.tables AS new
FULL OUTER JOIN SysTablesOld AS old
ON old.Name = new.Name;
1条答案
按热度按时间deikduxw1#
在SQLServer中,您可以存储来自包含数据库结构的不同sys表的结果。然后,在新版本之后,您可以编写一个查询,在该查询中,您可以将新sys表上的旧相关sys表完全外部联接,并且只保留导致旧sys表中为null或新sys表中为null的行。
旧sys表中的null表示在新版本中添加了某些内容,或者您加入的值已更改。
new sys表中的null表示在新版本中删除了某些内容,或者您加入的值已更改。
我假设不同的sql版本有类似于前面提到的sys表的内容。
我用sys.tables做了一个例子。这同样适用于列、模式、函数、过程等