對Export data-tier application報錯的處理 Error:SQL71564
這個問題是數據庫中一些對象如MS_Description,MS_DiagramPane1不支持DAC Export Data-tier Appliation 的操作。
詳見:DAC Support For SQL Server Objects and Versions http://msdn.microsoft.com/en-us/library/ee210549.aspx 這裏有詳細的說明。
遇到這個種問題一般的採用減輕問題的解決辦法(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工具導出導入數據
- 下載並安裝Microsoft® ODBC Driver 11 for SQL Server® - Windows http://www.microsoft.com/zh-cn/download/details.aspx?id=36434
- 下載並安裝 Microsoft Command Line Utilities 11 for SQL Server http://www.microsoft.com/zh-CN/download/details.aspx?id=36433
- 使用BCP工具從SQL Server導出數據
參考用例:C:\Users\ericwen>bcp ZcooTongDB.dbo.ZCT_SuperAdmins out "D:\DAC Packages\ ZcooTongDB.bacpac" -U sa -P *****
- 使用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 實用工具:http://technet.microsoft.com/zh-cn/library/ms162802.aspx
在操作過程中可以用默認的選項,直接回車。如圖:
如何實現批量導出數據呢,可以再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 --views --columns |
DAC相關文檔:http://msdn.microsoft.com/en-us/library/ee210546.aspx