将数据库从SQL Azure迁移到SQL Server后出现数据插入问题



我在SQL Azure上有一个数据库,它有一个身份主。在使用SQL Server导入导出向导后,我将数据传输到我的SQL Server 2008 R2数据库。

我的ASP。NET应用程序运行良好并读取数据。但是,当我试图在表"用户"中插入一个值时,它给了我一个错误:不能在列UserId中插入空。

原因是无法生成标识值。

我该如何克服这个问题?

PS:我尝试从SQL Azure生成脚本,但SQL文件大小为500MB,我的主机不允许运行那么大的脚本。

Edit:使用实体框架进行数据访问。UserId字段有一个IDENTITY property(1,1)。

Edit尝试从SQLAzure迁移工具创建模式,然后使用导入/导出数据复制数据。但是向导不维护行之间的关系。

数据导入/导出向导不保留数据库对象的整个结构。

。它只会复制数据,而不是复制数据所在表的整个结构——包括标识和键定义。

您可以导入数据,然后手动设置所有主键和默认字段以匹配所需的数据库定义,或者您可以连接到Azure实例并使用生成脚本选项在复制之前在2008数据库中生成模式。

但真正的答案是,你应该使用复制数据库向导来完成这一点,这在Azure上工作得很好。

问题是向导试图插入主键值,这在默认情况下是禁用的。如果不插入主键,关系就无法维护,因此整个问题就无法解决。

要解决此问题并进行万无一失的迁移,请确保新模式维护所有标识列。

在选择源表和目标表时,对于特定的表,点击"Edit Mappings"并勾选"Enable identity insert"复选框,可以插入主键值,保持结构和关系的完整性。

最新更新