在sql server db之间导出时保留标识规范值(sql2005/8)

Gli*_*kot 1 sql-server-2005 sql-server-2008

我有一个带有SQL服务器数据库的虚拟主机,并希望将我的数据库移动到他们的设施.我无权使用恢复/备份,但使用"导出"功能取得了成功.在那里,我指定了源数据库和目标数据库实例,并且它们都毫无困难地移动了.

但是现在我已经迁移了网站,第一次尝试向表中写入行会产生以下错误:

Cannot insert the value NULL into column 'eventID', table   'advanced_PT.dbo.tblEvents';     
column does not allow nulls. INSERT fails.
  The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)

当我查看数据库时,第一列(eventID)将填充其值,但标识规范已关闭.试图打开它会让它想要重新创建一个不好的表,因为它已经有了数据.

有没有办法出口和保存这个?我找到了一个SET_IDENTITY_INSERT的链接,但它看起来不像是技巧.

(我的版本经理是2008年,主持人有2005年)

谢谢!

标记

Gli*_*kot 6

只是为了关闭它,经过各种反复试验,我发现最好的方法似乎是:

右键单击DB - > Tasks-> Generate scripts

在"设置脚本选项"中

  • 说生成到新的查询窗口(我想如果它变大了它需要转到文件)
  • 单击高级按钮并从默认值更改以下内容(不会烦恼地保存这些首选项)
    • 为从属对象生成脚本:true
    • 包括if NOT EXISTS:true(我相信这只是基本上放'if'所以如果它试图删除一个尚未存在的表,没有错误结果)
    • 包含系统约束名称:True(我认为)
    • 脚本DROP和CREATE - 取决于数据库是否存在.如果你说create我认为它实际上可能会尝试创建数据库本身,而不仅仅是表,所以如果你在plesk中创建了数据库,那么最好使用IF NOT EXISTS的东西并说出'DROP和CREATE'这个盒子.
    • 服务器版本脚本:如果需要,请更改此项
    • 脚本的数据类型:非常重要 - 说'架构和数据',否则你只是得到空白表
    • 脚本索引/脚本全文索引:TRUE - 如果不这样做,标识规范将丢失

然后,该脚本将出现在您的查询窗口中.转到目标数据库,右键单击,说出"新查询",将其粘贴并执行.

可能是数据变大,最好用上面的方法创建"仅模式",然后使用导入/导出向导移动数据本身.虽然没试过这个.

希望对别人有帮助...... :)如果有人有更好的方法请给我留言!