【问题标题】:How to enable Identity Insert for multiple tables at once?SQL Server 导入/导出:启用身份插入
【发布时间】:2018-07-13 02:32:37
【问题描述】:

我正在使用 SQL Server 2014 导入和导出向导将数据从一个 SQL Server 实例复制到另一个实例。

我有 8 个数据库,每个数据库有 63 个表,所以总共 504 个表。

导入/导出工作正常,数据流入目标数据库。我遇到的问题是每个表都需要Enable Identity Insert 选项。

我需要 Enable Identity Insert 默认为勾选/选中,否则我将整天在这里只需单击 Edit mappings... > Enable Identity Insert > OK... 向下移动... Edit mappings... > Enable Identity Insert > OK... 向下移动... @987654326 @...

你懂的……

有什么方法可以为Enable Identity Insert..设置默认值吗?

【问题讨论】:

  • 一次只能为一张桌子设置。 docs.microsoft.com/en-us/sql/t-sql/statements/… At any time, only one table in a session can have the IDENTITY_INSERT property set to ON. If a table already has this property set to ON, and a SET IDENTITY_INSERT ON statement is issued for another table, SQL Server returns an error message that states SET IDENTITY_INSERT is already ON and reports the table it is set ON for. 使用 504 个表,您最好做一些动态的事情或使用带有循环的 SSIS。
  • 为什么每张桌子都需要它?如果您总是需要插入标识的值,那么听起来将其作为INDENTITY 列是错误的选择;它更多地用于 SQL Server 将处理 ID 的创建,而不是用户。也许问题不是需要打开INDENTITY_INSERT,而是您使用了IDENTITY 列,需要将其更改为简单的int/bigint
  • 也许复制是复制数据的更好选择?
  • @JacobH 这不是问题。我不是直接在 SQL 中工作,而是使用 Management Studio 附带的导入/导出向导。为所有表格勾选Enable Identity Insert 有效。我的问题是关于将该复选框默认为勾选/打开 - 所以我不必手动勾选它 504 次。
  • @Larnu 所有 63 个表都有一个主键 Int ID 列,大多数设置为自动递增。我正在将所有表中的所有数据从一个 SQL 实例复制到一个相同的实例(相同的表名和结构)。这就是该数据库的设置方式,我不打算进行重大更改以适应这种一次性数据移动。我的问题是关于在导出/导入向导中默认勾选复选框,而不是我对 ID 列的使用。

标签: sql-server data-import


【解决方案1】:

发现这个回答了我的问题:

https://dba.stackexchange.com/questions/190119/how-to-set-enable-identity-insert-for-all-the-tables-at-once-during-importing

你可以做到的......

您选择了多行,然后Edit mappings... 按钮将打开一个不同的对话框,您可以在其中为所有表格设置选项。上面的答案有一个很好的打印屏幕显示这一点。

听起来很简单,但我想我错过了,因为界面在一个表单上有两种选择方法:

  1. 复选框选择 - 用于在数据传输中包含源表
  2. 突出显示行选择 - 用于选择多行以设置选项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多