Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 在sql server db';s(sql2005/8)_Sql Server 2005_Sql Server 2008 - Fatal编程技术网

Sql server 2005 在sql server db';s(sql2005/8)

Sql server 2005 在sql server db';s(sql2005/8),sql-server-2005,sql-server-2008,Sql Server 2005,Sql Server 2008,我有一个带有SQL server数据库的Web主机,希望将我的数据库移动到他们的设备中。我没有使用还原/备份的权限,但已成功使用“导出”功能。在其中,我指定了源数据库实例和目标数据库实例,所有这些都可以顺利移动 但是,现在我已经迁移了站点,第一次尝试将行写入表时会出现以下错误: Cannot insert the value NULL into column 'eventID', table 'advanced_PT.dbo.tblEvents'; column does not

我有一个带有SQL server数据库的Web主机,希望将我的数据库移动到他们的设备中。我没有使用还原/备份的权限,但已成功使用“导出”功能。在其中,我指定了源数据库实例和目标数据库实例,所有这些都可以顺利移动

但是,现在我已经迁移了站点,第一次尝试将行写入表时会出现以下错误:

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.
当我查看数据库时,第一列(eventID)填充了它的值,但标识规范是关闭的。试图打开它会使它想要重新创建不好的表,因为它已经有数据了

有没有办法出口和保存这些东西?我找到了一个设置\u IDENTITY\u INSERT的链接,但看起来不像是技巧

(我的ent manager版本是2008,主机版本是2005)

谢谢


Mark

为了结束这一点,经过各种尝试和错误,我发现最好的方法似乎是:

右键单击数据库->任务->生成脚本

在“设置脚本选项”中

  • 假设generate to new query window(我猜如果它变大,则需要转到一个文件)
  • 单击“高级”按钮并更改以下默认设置(令人烦恼的是,不会保存这些首选项)
    • 为依赖对象生成脚本:true
    • Include if NOT EXISTS:true(我相信这基本上只是放置了一个“if”,所以如果它试图删除一个尚未存在的表,则不会出现错误)
    • 包括系统约束名称:True(我认为)
    • 脚本删除和创建-取决于数据库是否存在。如果你说create,我认为它实际上可能会尝试创建数据库本身,而不仅仅是表,因此如果你在plesk中创建了数据库,那么最好使用If not EXISTS,并在这个框中说“DROP and create”
    • 服务器版本脚本:如果需要,请更改此脚本
    • 要编写脚本的数据类型:非常重要-请说“Schema和data”,否则只会得到空白表
    • 脚本索引/脚本全文索引:TRUE-如果不这样做,标识规范将丢失
然后,脚本将出现在查询窗口中。转到目标数据库,右键单击,说“新建查询”,将其粘贴并执行

如果数据变大,最好使用上面的方法创建“仅模式”,然后使用导入/导出向导移动数据本身。我还没试过这个


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

为了解决这个问题,经过多次尝试,我发现最好的方法似乎是:

右键单击数据库->任务->生成脚本

在“设置脚本选项”中

  • 假设generate to new query window(我猜如果它变大,则需要转到一个文件)
  • 单击“高级”按钮并更改以下默认设置(令人烦恼的是,不会保存这些首选项)
    • 为依赖对象生成脚本:true
    • Include if NOT EXISTS:true(我相信这基本上只是放置了一个“if”,所以如果它试图删除一个尚未存在的表,则不会出现错误)
    • 包括系统约束名称:True(我认为)
    • 脚本删除和创建-取决于数据库是否存在。如果你说create,我认为它实际上可能会尝试创建数据库本身,而不仅仅是表,因此如果你在plesk中创建了数据库,那么最好使用If not EXISTS,并在这个框中说“DROP and create”
    • 服务器版本脚本:如果需要,请更改此脚本
    • 要编写脚本的数据类型:非常重要-请说“Schema和data”,否则只会得到空白表
    • 脚本索引/脚本全文索引:TRUE-如果不这样做,标识规范将丢失
然后,脚本将出现在查询窗口中。转到目标数据库,右键单击,说“新建查询”,将其粘贴并执行

如果数据变大,最好使用上面的方法创建“仅模式”,然后使用导入/导出向导移动数据本身。我还没试过这个


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

如果要保留标识值,则需要使用SET IDENTITY\u INSERT。问题可能与原始的
create table
语句有关。令人烦恼的是,在创建表后,无法更改列的identity属性。将列更改为标识列的唯一方法是添加新列并删除现有列(需要更新表中的每一行,从而浪费删除列的空间并更改列顺序),或者完全重新生成表。这对我来说似乎很荒谬,因为唯一需要的改变就是在某个地方更新一些元数据!谢谢你,马丁。我不确定我在创建它时会做错什么,我没有使用基于脚本的“createtable”命令。相反,我只是使用EnterpriseMgrGUI创建了一个新表,然后转到属性并说“Identity specification=yes”等。因此,我认为,从第一次创建时起,它就是一个标识列。不过我同意,这只是一个元数据更改,似乎是不必要的惩罚:)在搞乱了DAC和单用户模式后,我想我找到了
idtval
status
列中
sys.syscolpars
所需的确切元数据更改。不过,除了测试数据库,我不会在任何东西上尝试!元数据的更改听起来远远超出我的理解范围!谢谢你的调查,马丁。Cheers如果要保留标识值,则需要使用SET IDENTITY\u INSERT,问题可能与原始的
create table
语句有关。令人烦恼的是,在创建表后,无法更改列的identity属性。将列更改为标识列的唯一方法是添加新列并删除exist