【问题标题】:Data insert issue after migrating database from SQL Azure to SQL Server将数据库从 SQL Azure 迁移到 SQL Server 后的数据插入问题
【发布时间】:2013-03-19 12:16:07
【问题描述】:

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

我的 ASP.NET 应用程序运行良好并读取数据。但是当我尝试在表“用户”中插入一个值时,它给了我一个错误: 无法在“UserId”列中插入 null。

原因是它无法生成标识值。

我该如何解决这个问题?

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

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

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

【问题讨论】:

    标签: entity-framework sql-server-2008-r2 azure-sql-database database-migration identity-column


    【解决方案1】:

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

    即它只会复制数据,而不是数据适合的表的整个结构 - 包括身份和密钥定义。

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

    但真正的答案是您应该使用Copy Database Wizard 来完成此操作,这适用于 Azure。它是为这种情况设计的。

    【讨论】:

    • 根据回复,副本数据库是“导入/导出向导”。我也尝试先创建模式,然后导入数据,但复制数据中的关系没有得到维护。因此投了反对票。
    【解决方案2】:

    问题是向导试图插入默认禁用的主键值。如果不插入主键,关系就无法维持,这就是整个问题。

    要解决此问题并进行万无一失的迁移,请确保新架构维护所有身份列。

    在选择源表和目标表时,对于特定表,单击“编辑映射”并选中“启用标识插入”复选框以启用插入主键值,从而保持结构和关系不变。

    【讨论】:

      猜你喜欢
      • 2010-12-28
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多