在使用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));
事实上,管理工作室中的用户定义表类型无法删除。
如何解决?
我尝试使用this script导出所有选项。
答案 0 :(得分:1)
其他人最近出现此问题(link)。
问题在于,Microsoft某些数据库的迁移意外地创建了“错误对象”sys.script_deployment_databases
:一种使用sys架构但使用元数据is_user_defined = 1
标记的表类型定义。它是“用户定义”的事实导致bacpacs包含它。尝试恢复bacpac失败,因为它试图在sys下创建它。
微软最近更新了他们的DacFx和SSDT工具(以及Azure门户网站),在导出/导入bacpacs时显然忽略了这个错误的对象。
相关说明:部署dacpacs以升级这样一个受折磨的数据库有一个类似的问题,在部署尝试时,它尝试删除并重新创建所有“用户定义的表类型”并失败,因为script_deployment_databases
是在sys下但是,目前还没有为达帕奇修复工具。
删除script_deployment_databases
对象的一种方法是使用CREATE DATABASE [X] AS COPY OF [Y]
直接复制数据库,然后重命名它们以使副本替换原始数据。副本显然省略了该对象。
答案 1 :(得分:0)
解决方案是安装Microsoft SQL Server数据层应用程序框架的更新。可以找到here
可以在以下link
找到Microsoft的主题和响应以下是Raul Garcia的答复 - MS:
更新(截至2015年3月2日):
从V12升级导出和导入bacpacs的修复程序 已部署Azure SQL数据库服务器。你应该能够 通过Azure门户成功导出/导入,您可以 安装此更新版本的DacFx以通过SSMS导出/导入, SSDT,SqlPackage.exe或DacFx API。
http://www.microsoft.com/en-us/download/details.aspx?id=45886
(注意:如果是,您必须同时安装MSI的x64和x86版本 你在x64机器上。)
感谢您的耐心等待。 -Raul Garcia