如何将我的SQL Azure数据库复制到本地SQL Server实例?


12

我在SQL Azure实例上托管了OLTP数据库。我想从云中下拉数据库的副本,这样我就可以对它运行一些繁重的数据提取和OLAP风格的查询,而不会影响源数据库。

如何将数据库副本下拉到本地SQL Server实例?

Answers:


9

使用SQL Azure迁移向导

SQL Azure迁移向导(SQLAzureMW)为您提供了以下选项来进行分析,生成脚本和迁移数据(通过BCP):

  1. 从SQL Server到SQL Azure
  2. 从SQL Azure到SQL Server
  3. 从SQL Azure到SQL Azure

似乎不适用于LocalDB,在选择目标数据库时,出现错误,提示在步骤“不支持加密”。该工具无法连接到我的localdb实例
tobiak777

@ red2nb-我对LocalDB一无所知,但也许是因为错误提示这不是LocalDB的问题,而是目标数据库被加密的问题。
Nick Chammas

4

编写一个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

这是一种快速而肮脏的方法,不适用于大型数据库或复杂的架构。



2

我注意到此列表中有一个新工具,它是Idera的Azure SQL数据库备份。它是免费的,而且它们通常是很好的工具,因此值得一试。

将数据库(但这次仅是架构,没有数据)导出到Azure的另一种方法是使用DAC程序包(从Management Studio或Visual Studio 2010中提取的.dacpac文件)。仅在SQL 2008 R2 SP1 +中有效。

您可以在此处阅读有关数据层应用程序的详细信息:


0

您可以使用SSMS数据导入向导。这是关于它的一个不错的博客文章,带有图片。该关键点 是选择对源数据库.NET数据提供程序。我在尝试使其与其他(默认)本地提供程序一起工作时遇到很多问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.