我在SQL Azure实例上托管了OLTP数据库。我想从云中下拉数据库的副本,这样我就可以对它运行一些繁重的数据提取和OLAP风格的查询,而不会影响源数据库。
如何将数据库副本下拉到本地SQL Server实例?
我在SQL Azure实例上托管了OLTP数据库。我想从云中下拉数据库的副本,这样我就可以对它运行一些繁重的数据提取和OLAP风格的查询,而不会影响源数据库。
如何将数据库副本下拉到本地SQL Server实例?
Answers:
SQL Azure迁移向导(SQLAzureMW)为您提供了以下选项来进行分析,生成脚本和迁移数据(通过BCP):
- 从SQL Server到SQL Azure
- 从SQL Azure到SQL Server
- 从SQL Azure到SQL Azure
编写一个bcp
脚本,将所有表的内容导出到本地文件。
首先编写查询,该查询将输出bcp
命令以将目标数据库中的每个表导出到目标计算机上的路径:
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;
使用bcp
您要复制到的计算机上的SQL Azure数据库执行此查询,并将结果保存到cmd
文件中。执行该cmd
文件以将每个表导出到文本文件。
C:\> REM ask bcp to save the results of the above query to a file
C:\> bcp "SELECT 'bcp ' + SCHEMA_NAME(schema_id) + '.' + name + ' out ' + ' D:\backup_directory\' + SCHEMA_NAME(schema_id) + '.' + name + '.txt' + ' -c ' + ' -S servername.database.windows.net ' + ' -d database_name ' + ' -U username ' + ' -P password' FROM sys.tables;" queryout output_path\bcp_script.cmd -c -S servername.database.windows.net -d database_name -U username -P password
C:\> REM execute the bcp commands saved to file
C:\> output_path\bcp_script.cmd
这是一种快速而肮脏的方法,不适用于大型数据库或复杂的架构。
Red Gate有一个恰当地命名为SQL Azure备份工具。它是免费的,但Red Gate不再支持它。
我注意到此列表中有一个新工具,它是Idera的Azure SQL数据库备份。它是免费的,而且它们通常是很好的工具,因此值得一试。
将数据库(但这次仅是架构,没有数据)导出到Azure的另一种方法是使用DAC程序包(从Management Studio或Visual Studio 2010中提取的.dacpac文件)。仅在SQL 2008 R2 SP1 +中有效。
您可以在此处阅读有关数据层应用程序的详细信息: