【发布时间】: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 个表都有一个主键
IntID 列,大多数设置为自动递增。我正在将所有表中的所有数据从一个 SQL 实例复制到一个相同的实例(相同的表名和结构)。这就是该数据库的设置方式,我不打算进行重大更改以适应这种一次性数据移动。我的问题是关于在导出/导入向导中默认勾选复选框,而不是我对 ID 列的使用。