【问题标题】:Identifying Changes to SQL Database Structure Post Install识别安装后对 SQL 数据库结构的更改
【发布时间】:2020-05-21 16:57:50
【问题描述】:

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

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

【问题讨论】:

    标签: sql database installation change-tracking


    【解决方案1】:

    在 SQL Server 中,您可以存储来自包含数据库结构的不同 sys 表的结果。然后在新版本发布后,您可以编写一个查询,在该查询中将旧的相关 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-14
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多