SSMS:即使启用了选项,“生成更改脚本”也被禁用

时间:2019-01-29 15:26:23

标签: sql-server sql-server-2012 ssms

我在SSMS v17.9.1中的数据库表中添加了几列。我右键单击新列之一,以“生成生成更改脚本”,但此功能已被禁用。因此,我进入选项并确保已选中此选项。...

工具>选项>设计器>自动生成更改脚本

我重新启动了SSMS,但仍处于禁用状态。知道为什么吗?我创建了3列,并希望创建一个更改脚本以将这些列添加到生产数据库中。

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定为什么它(自动生成更改脚本)仍然对您禁用。我在下面确实喜欢,而且我可以创建更改脚本。

在SQL Server Management Studio(SSMS)中,这是一个选项,可以自动生成用于通过GUI进行更改的脚本。但默认情况下,此选项将被禁用。

要启用该选项:

From the SSMS menus click on "Tools"  
Click on "Options..."
Click on "Designers"
Check the checkbox "Auto generate change scripts" as highlighted below

选中指定的复选框后,SSMS现在可以在使用设计器时生成用于创建和/或修改任何表的脚本。

对此进行测试:

让我们确认用于创建新表的脚本生成。

  • 在SSMS中选择一个数据库并展开树
  • 右键单击其中的表文件夹,然后单击“新建表”。
  • 将出现一个设计师,用于创建新表。
  • 为此表创建一个列,我创建了一个名为TestCol1的列,其名称为nchar(10)
  • 保存新表并为其命名,然后单击“确定”
  • 将弹出另一个窗口,其中包含用于创建此新表的实际脚本,如下所示:

示例:

enter image description here

  • 单击“是”保存脚本,系统将提示您指定位置。 *默认情况下,文件名将是表的名称,例如“ tableName.sql”,但是可以将其更改为您喜欢的任何名称。

    • 为防止发生任何潜在的数据丢失问题,在数据库设计器上下文之外运行该脚本之前,应详细阅读此脚本。

      BEGIN TRANSACTION
      SET QUOTED_IDENTIFIER ON
      SET ARITHABORT ON
      SET NUMERIC_ROUNDABORT OFF
      SET CONCAT_NULL_YIELDS_NULL ON
      SET ANSI_NULLS ON
      SET ANSI_PADDING ON
      SET ANSI_WARNINGS ON
      COMMIT
      BEGIN TRANSACTION
      GO
      ALTER TABLE dbo.Table_1 SET (LOCK_ESCALATION = TABLE)
      GO
      COMMIT
      select Has_Perms_By_Name(N'dbo.Table_1', 'Object', 'ALTER') as ALT_Per, Has_Perms_By_Name(N'dbo.Table_1', 'Object', 'VIEW DEFINITION') as View_def_Per, Has_Perms_By_Name(N'dbo.Table_1', 'Object', 'CONTROL') as Contr_Per 
      
  • 如果您不想保存脚本,则单击“否”,单击“否”将不会回滚已实现的更改,但不会保存脚本。