标识安装后对SQL数据库结构的更改

问题描述 投票:0回答:1

有时,在安装新的供应商开发时,会添加,修改或删除表。此外,有时还会添加,修改或删除存储过程。这些都可能包含内容更改(例如,在现有表中添加的新配置条目)。

我正在寻找一种有效的方法来跟踪安装过程中发生的这些更改,因为这些更改并不总是由供应商传达,并且会导致负面的下游影响。

sql database install change-tracking
1个回答
0
投票

在SQL Server中,您可以存储来自包含数据库结构的不同sys表的结果。然后,在新发行版之后,您可以编写一个查询,在其中将FULL OUTER JOIN联接到新sys表上的旧的相关sys表中,并且仅保留导致旧sys表中为NULL或新sys表中的NULL的行。

旧sys表中的Null表示在新版本中添加了某些内容,或者您​​要加入的值已更改。

新sys表中的NULL表示在新版本中删除了某些内容,或者您​​要加入的值已更改。

我假定不同的SQL版本具有与上述sys表相似的东西。

我已经使用sys.tables作了示例。列,模式,函数,过程等也一样。SQL fiddle

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;
© www.soinside.com 2019 - 2024. All rights reserved.