识别安装后对sql数据库结构的更改

x6492ojm  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(257)

有时,在安装新的供应商开发时,会添加、修改或删除表。此外,存储过程有时也会被添加、修改或删除。其中任何一个都可能包括内容更改(例如,在现有表中添加新的配置条目)。
我正在寻找一种有效的方法来跟踪这些在安装过程中发生的更改,因为它们并不总是由供应商进行沟通,并造成负面的下游影响。

deikduxw

deikduxw1#

在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;

相关问题