gpt4 book ai didi

sql-server-2008 - SQL Server 生成带有标识插入的脚本

转载 作者:行者123 更新时间:2023-12-02 15:38:38 25 4
gpt4 key购买 nike

生成数据库脚本时,我正在编写要迁移到不同环境的数据脚本。脚本生成中是否有我可以启用以自动打开/关闭 IDENTITY_INSERT 的设置,这样我就不必在生成的脚本中手动遍历每个表并进行设置?我正在使用 SSMS,我想通过 SSMS 执行此操作。

这是我得到的:

INSERT my_table (my_table_id, my_table_name) VALUES (1, 'val1');
INSERT my_table (my_table_id, my_table_name) VALUES (2, 'val2');

这是我想要的:

SET IDENTITY_INSERT my_table ON
INSERT my_table (my_table_id, my_table_name) VALUES (1, 'val1');
INSERT my_table (my_table_id, my_table_name) VALUES (2, 'val2');
SET IDENTITY_INSERT my_table OFF

最佳答案

我知道这是一个老问题,但关于 SSMS,已接受的答案和对已接受答案的评论并不完全正确。

在 Sql Server Management Studio (SSMS) 中使用生成脚本任务生成包含数据的脚本时,set identity_insert 语句将包含在具有标识列的表中.

在对象资源管理器中:任务 -> 生成脚本 -> [所有表选定表] -> 高级 -> [Schema with Data Data]

  • 如果从编写脚本数据的表没有具有 identity 属性的列,它不会生成 set identity_insert 语句。

  • 如果要从中编写数据脚本的表确实具有具有标识属性的列,它将生成set identity_insert 语句。

    <

使用 SSMS 2008 和 SSMS 2012 进行测试和确认

在 OP 的情况下,我猜测源表没有为源表中的 my_table_id 设置标识属性,但是为 my_table_id 设置了标识属性> 在目标表中。

要获得所需的输出,请将表更改为脚本数据,使 my_table_id 具有标识属性。

本文深入解释了执行此操作的步骤(不使用 SSMS 中的设计器):Add or drop identity property for an existing SQL Server column - Greg Robidoux

  • 使用标识属性创建一个新列

  • 将数据从现有的 id 列转移到新列

  • 删除现有的 id 列。

  • 将新列重命名为原来的列名

关于sql-server-2008 - SQL Server 生成带有标识插入的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com