gpt4 book ai didi

SqlPackage.exe 导出/导入数据库

转载 作者:行者123 更新时间:2023-12-03 00:14:45 24 4
gpt4 key购买 nike

使用 SqlPackage.exe 将 Azure 数据库迁移到 V12 预览版以导出并将数据库导入到本地计算机后,出现错误:

Error SQL72014: .Net SqlClient Data Provider: Msg 2760, Level 16, State 1, Line 1

The specified schema name "sys" either does not exist or you do not have permission to use it.


Error SQL72045: Script execution error. The executed script:
CREATE TYPE [sys].[script_deployment_databases] AS TABLE (
[logical_server] [sysname] NOT NULL,
[database_name] [sysname] NOT NULL,
UNIQUE NONCLUSTERED ([database_name] ASC, [logical_server] ASC));

事实上,在 Management Studio 中查找的用户定义表类型无法删除。

如何解决?

我尝试使用 this script 导出所有选项.

最佳答案

最近其他人也遇到了这个问题(link) .

问题在于 Microsoft 对某些数据库的迁移意外创建了“错误对象”sys.script_deployment_databases:一个使用 sys 架构但标有元数据的表类型定义 is_user_define = 1 。事实上,它是“用户定义的”,导致 bacpacs 包含它。尝试恢复 bacpac 失败,因为它尝试在 sys 下创建它。

Microsoft 最近更新了他们的 DacFx 和 SSDT 工具(以及 Azure 门户),以便在导出/导入 bacpac 时明显忽略此错误对象。

相关说明:部署 dacpac 来升级此类受影响的数据库也存在类似问题,在部署尝试时,它会尝试删除并重新创建所有“用户定义的表类型”,但会失败,因为 script_deployment_databases 位于 sys.但是,目前 dacpac 的工具尚未修复。

删除 script_deployment_databases 对象的一种技术是使用 CREATE DATABASE [X] AS COPY OF [Y] 直接复制数据库,然后重命名它们,以便复制替换原来的。副本中显然省略了该对象。

关于SqlPackage.exe 导出/导入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28028210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com