博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库SQL Server DAC 导入导出数据到SQL Azure问题
阅读量:4686 次
发布时间:2019-06-09

本文共 2991 字,大约阅读时间需要 9 分钟。

对Export data-tier application报错的处理 Error:SQL71564

这个问题是数据库中一些对象如MS_Description,MS_DiagramPane1不支持DAC Export Data-tier Appliation 的操作。

详见:DAC Support For SQL Server Objects and Versions  这里有详细的说明。

遇到这个种问题一般的采用减轻问题的解决办法(Mitigation)

1. 首先选用支持DAC Extract Data-tier Application的数据库版本,如SQL Server 2008 R2 SP2或者更高版本。导出dacpac文件,这个文件包含了数据库结构,metadata和schema

2. 因为有的对象不支持DAC Export Data-tier Application,即导出bacpac文件。所以我们不能采取这种方式,我们采取微软提供的工具bcp.exe

3. 使用BCP.exe工具导出导入数据

  1. 下载并安装Microsoft® ODBC Driver 11 for SQL Server® - Windows 
  2. 下载并安装 Microsoft Command Line Utilities 11 for SQL Server 
  3. 使用BCP工具从SQL Server导出数据

参考用例:C:\Users\ericwen>bcp ZcooTongDB.dbo.ZCT_SuperAdmins out "D:\DAC Packages\ ZcooTongDB.bacpac" -U sa -P *****

  1. 使用BCP工具导入数据到SQL Azure

参考用例:C:\Users\ericwen>bcp ZcooTongDB1.dbo.ZCT_SuperAdmins in "D:\DAC Packages\ ZcooTongDB.bacpac" -U ericwen@[云数据库名称] -P ****** -S "[云数据库名称].database.windows.net"

bcp 实用工具:

在操作过程中可以用默认的选项,直接回车。如图:

如何实现批量导出数据呢,可以再SSMS运行以下脚本

SELECT 

      'bcp ' 
    + SCHEMA_NAME(schema_id) + '.' + name 
    + ' out ' 
    + ' D:\local_backup_directory\' + SCHEMA_NAME(schema_id) + '.' + name + '.txt' 
    + ' -c ' 
    + ' -S servername.database.windows.net ' 
    + ' -d database_name ' 
    + ' -U username ' 
    + ' -P password' 
FROM sys.tables;

将查询结果保存到bcpcmd.bat文件中,然后用cmd运行即可

4. 清除数据库中的Table、View、Column中的不支持DAC的对象(不支持Export 到 bacpac文件的对象)

在SSMS里运行

--tables 

  
select 'EXEC sp_dropextendedproperty 
@name = ''MS_Description'' 
,@level0type = ''schema'' 
,@level0name = ' + object_schema_name(extended_properties.major_id) + ' 
,@level1type = ''table'' 
,@level1name = [' + object_name(extended_properties.major_id)+']' 
from sys.extended_properties 
where extended_properties.class_desc = 'OBJECT_OR_COLUMN' 
and extended_properties.minor_id = 0 
and extended_properties.name = 'MS_Description' 
 

--views 

  
select 'EXEC sp_dropextendedproperty 
@name = '''+extended_properties.name+''' 
,@level0type = ''schema'' 
,@level0name = ' + object_schema_name(extended_properties.major_id) + ' 
,@level1type = ''view'' 
,@level1name = [' + object_name(extended_properties.major_id)+']' 
from sys.extended_properties 
where extended_properties.class_desc = 'OBJECT_OR_COLUMN' 
and extended_properties.minor_id = 0 
and (extended_properties.name = 'MS_DiagramPane1' or extended_properties.name = 'MS_DiagramPaneCount')

--columns 

  
select 'EXEC sp_dropextendedproperty 
@name = ''MS_Description'' 
,@level0type = ''schema'' 
,@level0name = ' + object_schema_name(extended_properties.major_id) + ' 
,@level1type = ''table'' 
,@level1name = ' + object_name(extended_properties.major_id) + ' 
,@level2type = ''column'' 
,@level2name = [' + columns.name+']' 
from sys.extended_properties 
join sys.columns 
on columns.object_id = extended_properties.major_id 
and columns.column_id = extended_properties.minor_id 
where extended_properties.class_desc = 'OBJECT_OR_COLUMN' 
and extended_properties.minor_id > 0 
and extended_properties.name = 'MS_Description' 

将运行后的结果再到SSMS里运行就可以移除那些不支持的对象了,这样再进行Export操作就可以成功。 

 

DAC相关文档:

转载于:https://www.cnblogs.com/xyzhuzhou/p/4819363.html

你可能感兴趣的文章
hdu-1814(2-sat)
查看>>
谷歌浏览器,添加默认搜索引擎的搜索地址
查看>>
数据结构化与保存
查看>>
如何避免在简单业务逻辑上面的细节上面出错
查看>>
Linux shell 命令判断执行语法 ; , && , ||
查看>>
vim代码格式化插件clang-format
查看>>
RTP Payload Format for Transport of MPEG-4 Elementary Streams over http
查看>>
Java环境变量设置
查看>>
【JBPM4】判断节点decision 方法3 handler
查看>>
filter 过滤器(监听)
查看>>
node启动时, listen EADDRINUSE 报错;
查看>>
杭电3466————DP之01背包(对状态转移方程的更新理解)
查看>>
kafka中的消费组
查看>>
python--注释
查看>>
小组成员及其git链接
查看>>
SQL case when else
查看>>
MVc Identity登陆锁定
查看>>
cdn连接失败是什么意思_关于CDN的原理、术语和应用场景那些事
查看>>
ultraedit26 运行的是试用模式_免费试用U盘数据恢复工具 – 轻松找回U盘丢失的各种数据!...
查看>>
python sum函数导入list_python sum函数iterable参数为二维list,start参数为“[]”该如何理解...
查看>>