Visual Studio架构比较生成ALTER TABLE sql而不是使用临时表

时间:2016-04-15 13:25:06

标签: database sql-server-2008-r2 visual-studio-2015

我正在测试我的PHP CMS Web应用程序从旧版本(版本1)升级到新版本(版本2)。它使用SQL Server 2008 R2数据库。

作为测试和文档编制过程的一部分,我需要获取升级期间对数据库结构所做的所有更改的列表。要做到这一点,我使用Microsoft Visual Studio 2015社区版进行比较和"差异"数据库的两个版本。 Visual Studio为我提供了升级期间对数据库表所做的所有更改的列表。这太棒了,但有些东西我不喜欢。

当一个列已添加到新版本数据库的表中时,似乎Visual Studio 2015架构比较工具会以这种方式生成用于添加新列的sql语句:

  1. 它会创建一个临时表:CREATE TABLE [dbo].[tmp_ms_xx_users]
  2. 它将旧表中的数据插入临时表:INSERT INTO [dbo].[tmp_ms_xx_users] SELECT... FROM [dbo].[users]
  3. 然后它丢弃了原始表:DROP TABLE [dbo].[users]
  4. 并将临时表重命名为与原始表相同的名称。 EXECUTE sp_rename N'[dbo].[tmp_ms_xx_users]', N'users'
  5. [dbo].[users]表现在包含所有原始数据和新列。没关系,但我不喜欢在我的文档中使用临时表和DROP TABLE语句。

    有没有办法让Visual Studio生成表格更改语句

    ALTER TABLE [dbo].[users] ADD [a_new_column] ...

    ALTER TABLE [dbo].[users] DROP COLUMN [old_column] ...

    语句而不是使用临时表?

    这将使我的文档更好。 (我只是出于文档目的而这样做。应用安装程序实际上会在升级过程中处理所有数据库更改。)

    感谢。

0 个答案:

没有答案