有谁知道如何将SQL Azure数据库复制到我的开发机器?我想停止支付云中的开发数据库,但这是获取生产数据的最佳方式。我将我的生产数据库复制到一个新的开发数据库,但我希望在同一个数据库本地。
有什么建议吗?
答案 0 :(得分:121)
有多种方法可以做到这一点:
data
。不传输列属性,约束,键,索引,存储过程,触发器,安全设置,用户,登录等。但是,这是一个非常简单的过程,只需通过SQL Server Management Studio中的向导即可完成。 方法#1 (使用SSIS)的手动程序如下:
您可以通过创建SSIS包并在您想要重新导入数据时重新执行它来自动执行它。请注意,您只能使用SSIS导入到干净的数据库,一旦完成一次,就不能对本地数据库进行增量更新。
方法#2 (SSID数据加模式对象)非常简单。首先通过上述步骤,然后创建DB Creation脚本(在SSMS中右键单击数据库,选择Generate Scripts - > Database Create)。然后在本地数据库上重新播放此脚本。
方法#3 在博客中描述:http://dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/。有一个视频剪辑,其中包含将DB内容作为BACPAC传输到Azure Blob存储的过程。之后,您可以在本地复制文件并将其导入SQL实例。此处描述了将BACPAC导入Data-Tier应用程序的过程:http://msdn.microsoft.com/en-us/library/hh710052.aspx。
答案 1 :(得分:30)
我只是想添加dumbledad's answer的简化版本,因为它是正确的。
答案 2 :(得分:24)
将Azure数据库数据复制到本地数据库: 现在,您可以使用SQL Server Management Studio执行此操作,如下所示:
"接着" /"下一个" /"完成"
答案 3 :(得分:21)
在SQL Server 2016 Management Studio中,简化了将azure数据库导入本地计算机的过程。
右键单击要导入的数据库,单击任务>导出数据层应用程序,并将数据库导出到本地.dacpac文件。
在本地目标SQL Server实例中,您可以右键单击数据库>导入数据层应用程序,一旦它在本地,您就可以执行备份和还原数据库等操作。
答案 4 :(得分:20)
我认为现在要容易得多。
此外,我使用Sql Backup和FTP(https://sqlbackupandftp.com/)每日备份到安全的FTP服务器。我只需从那里提取最近的BACPAC文件,然后将其导入同一个对话框,这样可以更快,更轻松地创建本地数据库。
答案 5 :(得分:8)
您还可以在Windows Azure管理门户中查看SQL Azure Data Sync。它允许您检索和还原整个数据库,包括SQL Azure和SQL Server之间的架构和数据。
答案 6 :(得分:5)
这很简单。这对我有用......在将Azure SQL数据库放到本地计算机上......:
但是,请注意,如果您还想要DATA以及脚本,请务必在开始生成之前检查高级选项...向下滚动到"数据类型到脚本&#34 ;并确保您拥有"架构和数据" ...或任何适合您的。
它将为您提供一个很好的SQL脚本文件,然后可以在本地计算机上运行它,它将创建数据库并使用所有数据填充它。
请记住,在我的情况下,我没有FK或其他限制......而且,它不是很多数据。
我不建议将其作为一般的备用机制......
答案 7 :(得分:3)
msdeploy.exe
警告:msdeploy.exe
无法自行创建目标数据库,因此您需要先手动创建目标数据库。
像这样运行msdeploy.exe
:
"c:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -dest:dbDacFx="destination_DB_connection_string",dropDestinationDatabase=true -source:dbDacFx="azure_DB_connection_string",includeData=true -verbose
SqlPackage.exe
将天蓝色数据库导出为bacpac包。
"c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Export /ssn:"azure_db_server" /sdn:"azure_db_name" /su:"user_name" /sp:"password" /tf:"file.bacpac"
将包导入本地数据库。
"c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Import /SourceFile:"file.bacpac" /TargetServerName:".\SQLEXPRESS" /TargetDatabaseName:CopyOfAzureDb
答案 8 :(得分:3)
请尝试:http://mooneyblog.mmdbsolutions.com/index.php/2011/01/11/simple-database-backups-with-sql-azure/。
其他替代方案是SQL Azure Data Sync。
我在几天前又跑过一篇博文,但现在找不到了。我会在找到后立即更新这篇文章。
答案 9 :(得分:2)
我无法使SSIS导入/导出工作,因为我收到错误'插入只读列“失败”id“'。我也无法使http://sqlazuremw.codeplex.com/工作,上面的SQL Azure Data Sync链接对我不起作用。
但我发现了一篇关于BACPAC文件的优秀博文:http://dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/
在the video in the post中,博客文章的作者经历了六个步骤:
创建或转到Azure管理门户中的存储帐户。 您将需要存储的Blob URL和主访问密钥 帐户。
博客文章建议为bacpac文件制作一个新容器 建议使用Azure Storage Explorer。 (注: 您需要存储的Blob URL和主访问密钥 帐户将其添加到Azure存储资源管理器。)
在Azure管理门户中,选择您想要的数据库 导出并单击“导入和导出”部分中的“导出” 带。
生成的对话框需要您的用户名和密码 数据库,blob URL和访问密钥。别忘了包括 blob URL中的容器并包含文件名(例如 https://testazurestorage.blob.core.windows.net/dbbackups/mytable.bacpac)。
单击“完成”后,数据库将导出到BACPAC 文件。这可能需要一段时间。您可能会看到显示零字节文件 如果您签入Azure存储资源管理器,请立即进行。这是 导入/导出服务检查它是否具有写入权限 BLOB店。
完成后,您可以使用Azure存储资源管理器进行下载 BACPAC文件,然后在SQL Server Management Studio中 右键单击本地服务器的数据库文件夹,然后选择“导入” 数据层应用程序将启动向导读取的向导 BACPAC文件,用于生成Azure数据库的副本。魔法师 也可以直接连接到blob-store以获取BACPAC 文件,如果你不想先在本地复制它。
最后一步可能只适用于SQL Server 2012版的SQL Server Management Studio(即我正在运行的版本)。我没有早先在这台机器上检查。在博客文章中,作者使用命令行工具DacImportExportCli.exe进行导入,我认为可以在http://sqldacexamples.codeplex.com/releases
获取答案 10 :(得分:2)
关于“我无法让SSIS导入/导出工作,因为我收到错误'失败插入只读列”id“'。 这可以通过在映射屏幕中指定您希望允许插入Identity元素来解决。
之后,使用SQL导入/导出向导将一切都从Azure复制到本地数据库,一切正常。
我只有SQL Server 2008 R2附带的SQL导入/导出向导(工作正常),以及Visual Studio 2012 Express创建本地数据库。
答案 11 :(得分:2)
接受的答案已过期。我找到了一个更好的答案:使用导入数据层应用程序
更多详细信息请参阅此文章: Restoring Azure SQL Database to a Local Server
答案 12 :(得分:2)
答案 13 :(得分:1)
您可以使用新的Azure移动服务从SQL Azure进行每晚备份导出到Azure存储中托管的.bacpac文件。此解决方案是100%云,不需要第三方工具,也不需要本地托管的SQL Server实例来下载/复制/备份任何内容。
大约有8个不同的步骤,但它们都很简单: http://geekswithblogs.net/BenBarreth/archive/2013/04/15/how-to-create-a-nightly-backup-of-your-sql-azure.aspx
答案 14 :(得分:1)
下载Optillect SQL Azure Backup - 它有15天的试用期,所以它足以移动您的数据库:)
答案 15 :(得分:1)
我总是使用导入/导出功能,这似乎是最简单的功能。
第1步:
从azure实例获取备份,如下所示,选择数据库→右键单击→任务→导出数据层应用程序。
第2步: 为备份文件指定一个特定名称并将其保存在所需位置
第3步:您已将数据库的备份从sql实例备份到本地。让我们恢复到本地。将备份的数据库复制到C驱动器。现在使用管理员权限打开PowerShell并导航到C盘
第4步:让我们下载powershell脚本以删除主服务器keyRemoveMasterKey.ps1,将脚本放在同一个驱动器上,在这种情况下为C。
第5步:按如下方式运行脚本, 。\ RemoveMasterKey.ps1 -bacpacPath" C:\ identity.bacpac"
即便如此,现在您可以在本地环境中的MSSQL 2017上恢复它。
步骤6:连接到本地服务器,然后点击数据库→导入数据层应用程序
第7步:为要还原的数据库命名。
现在你会看到绿色的一切!
使用图表阅读 blog 。
答案 16 :(得分:0)
您好我正在使用SQLAzureMW工具进行SQLAzure数据库迁移和管理。非常有用的一个。它是从codeplex下载的,但是目前它不可用,codeplex将会关闭,同样的应用程序工具现在可以在GttHub中使用。以下链接说明了如何使用此工具以及可供下载的应用程序。
答案 17 :(得分:0)
在SQL Server Management Studio中
右键单击要导入的数据库,单击任务>导出数据层应用程序,然后将数据库导出到本地.dacpac文件。
在本地目标SQL Server实例中,可以右键单击“数据库”>“导入数据层应用程序”,一旦它在本地,就可以执行备份和还原数据库之类的操作。
答案 18 :(得分:0)
如果有人想要一个免费且有效的选项(并且不介意手动操作)将数据库备份到本地,那么使用最新版本Microsoft Visual Studio 2015 Community Edition(免费)中内置的架构和数据比较功能,或者专业/高级/终极版。它就像一个魅力!
我在Azure上有BizPark帐户,没有付费就无法直接备份数据库。我在VS中找到了这个选项。
答案 19 :(得分:0)
如果有任何人在导入使用 Azure SQL Sync 的数据库的Bacpac时遇到问题,Sandrino Di Mattia会开发great simple application来解决此问题。
答案 20 :(得分:0)
使用SQL Azure中的导入/导出服务创建.bacpac文件。
然后在另一篇Stack Overflow文章中看一下这个方法。
答案 21 :(得分:0)
现在您可以使用SQL Server Management Studio执行此操作。
答案 22 :(得分:0)
我的诀窍是开始在空DB上复制PKs / FKs / constraints,然后在导入数据时暂时禁用约束(参见https://stackoverflow.com/a/161410)。
更确切地说:
希望这有帮助!