将SQL.Bak转换为BacPac

时间:2017-07-09 06:48:30

标签: sql-server azure azure-sql-database

我正在使用SQL Server 2012,我有一个数据库文件(.bak)尝试将其导出到(.BacPac)文件,因此我可以将其导入Azure。问题在于转换进度(验证方案模型),

我有以下错误:

  1.   

    “错误SQL71501:视图:[dbo]。[AC_Section]有一个未解析的对象[dbo]的引用。[sueres]。”。

  2.   

    “错误SQL71562:过程:[dbo]。[milp]有一个未解析的对象[tempdb]的引用。[dbo]。[sysob]。[xtyp]。”

  3. 并且错误与许多其他表和对象一起发生。

    如何解决此问题,或者是否有其他方法可以将数据库转换为.bacpac。

2 个答案:

答案 0 :(得分:1)

尝试在将数据库迁移到SQL Azure之前解决无效对象。无效对象是引用不再存在的对象的对象(存储过程,视图等),包括tempdb上的对象。

SELECT 
    QuoteName(OBJECT_SCHEMA_NAME(referencing_id)) + '.' 
        + QuoteName(OBJECT_NAME(referencing_id)) AS ProblemObject,
    o.type_desc,
    ISNULL(QuoteName(referenced_server_name) + '.', '')
    + ISNULL(QuoteName(referenced_database_name) + '.', '')
    + ISNULL(QuoteName(referenced_schema_name) + '.', '')
    + QuoteName(referenced_entity_name) AS MissingReferencedObject
FROM
    sys.sql_expression_dependencies sed
        LEFT JOIN sys.objects o
            ON sed.referencing_id=o.object_id
WHERE
    (is_ambiguous = 0)
    AND (OBJECT_ID(ISNULL(QuoteName(referenced_server_name) + '.', '')
    + ISNULL(QuoteName(referenced_database_name) + '.', '')
    + ISNULL(QuoteName(referenced_schema_name) + '.', '')
    + QuoteName(referenced_entity_name)) IS NULL)
ORDER BY
    ProblemObject,
    MissingReferencedObject

我建议您在将数据库迁移到SQL Azure之前使用数据迁移助手。此工具此时不会检测无效对象。

Microsoft Data Migration Assistant v3.1

希望这有帮助。

此致

Alberto Morillo

答案 1 :(得分:0)

所以我得出结论,Azure中(.bak)文件中的某些数据,函数,表格,对象等不支持,或者你可以说它们已经过时了。将(.bac)文件部署到Azure的方法是在将文件部署到Azure之前避免,删除或重写这些数据,这将改变数据流。