【问题标题】:SQL Import With Identity Trouble带有身份问题的 SQL 导入
【发布时间】:2013-02-07 02:27:15
【问题描述】:

我有一个使用 SQL 导出工具创建的数据库,但现在看到我没有写出主键和约束。不幸的是,这是我唯一的数据副本。

我已经创建了一个带有适当键的空白数据库结构,现在正尝试使用 SQL 2012 中的导入数据向导将数据导入新数据库。在映射设置中,我选择了启用身份插入.但是,我不断地在错误中遇到错误。

然后我尝试使用 Visual Studio 2012 中的 SQL 比较工具,认为我可以生成 ALTER 表脚本来创建主键和保存数据的数据库的约束,但我似乎只能让它生成 CREATE TABLE脚本。显然,这样做会删除表格,从而删除我的数据。

最终,我只想要一个包含键、约束和数据的数据库。我已经用尽了我的知识,现在不太确定如何进行。

我希望你们中的一些大师有一些技巧可以帮助我。提前真诚感谢您的任何帮助。

【问题讨论】:

  • 你遇到了什么错误?
  • 除非错误是关键违规,否则最好将结构更改应用于数据,而不是尝试将数据注入结构。
  • 如果存在数据将进入目标数据库的 GAPS,并且表的值低于 GAPS,您可以尝试 SET IDENTITY_INSERT OFF TABLE A - INSERT RECORDS TO A 然后打开 IDENTITY_INSERT。这只是连接工作中给定时间一个表的一个选项。基本上,允许您在间隙中指定 IDENTITY 列的值。
  • 我以为我通过选中“启用身份插入”来关闭身份插入,但我认为它一直受到外键表的约束。我最终按照 RBarryYoung 的建议做了并更新了结构。乏味,但现在完成了。我感谢帮助和 cmets。谢谢!

标签: sql sql-server database compare


【解决方案1】:

“启用插入标识”对我有用。

也许下次导入带有标识字段的表时,可以尝试导入标识字段,该怎么做?:

对于您在向导的“选择源表和视图”步骤中导入的每个表

选择表>编辑映射>编辑sql>

代码会是这样的:

CREATE TABLE [dbo].[miTable] (
[idField] [int] NOT NULL,
[anotherColumns] varchar ...
)

修改如下:

CREATE TABLE [dbo].[miTable] (
[idField] [int] IDENTITY(1,1) NOT NULL,
[anotherColumns] varchar ...
)

不要忘记启用插入标识。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 2022-07-10
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多