[英]How do I migrate changes to my Azure SQL Server database from copy to production
[英]How do I copy SQL Azure database to my local development server?
有谁知道我如何将 SQL Azure 数据库复制到我的开发机器? 我不想再花钱在云中拥有一个开发数据库,但这是获取生产数据的最佳方式。 我将我的生产数据库复制到一个新的开发数据库,但我希望在本地拥有相同的数据库。
有什么建议么?
有多种方法可以做到这一点:
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 。
我只想添加简化版的dumbledad的答案 ,因为它是正确的。
将Azure数据库数据复制到本地数据库:现在,您可以使用SQL Server Management Studio执行以下操作:
“下一步”/“下一步”/“完成”
在SQL Server 2016 Management Studio中,简化了将azure数据库添加到本地计算机的过程。
右键单击要导入的数据库,单击“ 任务”>“导出数据层应用程序” ,然后将数据库导出到本地.dacpac文件。
在本地目标SQL Server实例中,您可以右键单击“ 数据库”>“导入数据层应用程序” ,一旦它在本地,您就可以执行备份和还原数据库等操作。
我觉得现在好多了。
此外,我使用Sql Backup和FTP( https://sqlbackupandftp.com/ )每日备份到安全的FTP服务器。 我只是从那里拉出一个最近的BACPAC文件,并将其导入同一个对话框,这样可以更快,更轻松地创建本地数据库。
您还可以在Windows Azure管理门户中查看SQL Azure Data Sync 。 它允许您检索和还原整个数据库,包括SQL Azure和SQL Server之间的架构和数据。
这很容易。 这对我有用......在将Azure SQL数据库下载到本地计算机上...:
但是,请注意,如果您还想要DATA以及脚本,请务必在开始生成之前检查高级选项...向下滚动到“脚本数据类型”,并确保“架构和数据“......或任何适合您的数据。
它将为您提供一个很好的SQL脚本文件,然后可以在本地计算机上运行它,它将创建数据库并使用所有数据填充它。
请记住,在我的情况下,我没有FK或其他约束......而且,它不是很多数据。
我不建议将其作为一般的备用机制......
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
将azure DB导出为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
请试试这个: http : //mooneyblog.mmdbsolutions.com/index.php/2011/01/11/simple-database-backups-with-sql-azure/ 。
其他替代方案是SQL Azure Data Sync 。
几天前我又跑过一篇博文,但现在找不到了。 我一发现就会更新这篇文章。
我无法使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/
在帖子的视频中,博客文章的作者经历了六个步骤:
创建或转到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-store的写访问权。
完成后,您可以使用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上找到
关于“我无法让SSIS导入/导出工作,因为我收到错误'插入只读列”失败“id”'。这可以通过在映射屏幕中指定你想要的来解决允许插入标识元素。
之后,一切正常,使用SQL导入/导出向导从Azure复制到本地数据库。
我只有SQL Server 2008 R2附带的SQL导入/导出向导(工作正常),以及Visual Studio 2012 Express创建本地数据库。
接受的答案已过时。 我找到了一个更好的答案:使用导入数据层应用程序
更多详细信息,请参阅此文章:将Azure SQL数据库还原到本地服务器
您可以使用新的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
我总是使用导入/导出功能,这似乎是最容易的。
步骤1:
从azure实例获取备份,如下所示:选择数据库→右键单击→任务→导出数据层应用程序。
第2步:为备份文件指定一个特定名称,并将其保存在所需位置
第3步:就是你已经从sql实例备份了数据库到你的本地。 让我们恢复到本地。 将备份的数据库复制到C驱动器。 现在使用管理员权限打开PowerShell并导航到C盘
步骤4:让我们下载powershell脚本以删除主密钥.RemoveMasterKey.ps1将脚本放在同一驱动器上,在这种情况下为C。
步骤5:运行脚本如下,。\\ RemoveMasterKey.ps1 -bacpacPath“C:\\ identity.bacpac”
就是这样,现在您可以在本地环境中的MSSQL 2017上恢复它。
步骤6:连接到本地服务器,然后单击Databases→Import-Data-Tier-Application
步骤7 :为要还原的数据库命名。
现在你会看到绿色的一切!
用图表阅读我的博客 。
下载Optillect SQL Azure备份 - 它有15天的试用期,所以它足以移动你的数据库:)
我的诀窍是开始在空DB上复制PKs / FKs / constraints,然后在导入数据时暂时禁用约束(参见https://stackoverflow.com/a/161410 )。
更确切地说:
希望这可以帮助!
现在,您可以使用SQL Server Management Studio执行此操作。
如果有人想要一个免费且有效的选项(并且不介意手动)将数据库备份到本地,那么使用最新版本Microsoft Visual Studio 2015 Community Edition(免费)或Professional / Premium / Ultimate中内置的架构和数据比较功能版。 它就像一个魅力!
我在Azure上有BizPark帐户,没有付费就无法直接备份数据库。 我在VS中找到了这个选项。
嗨,我正在使用SQLAzureMW工具进行SQLAzure数据库迁移和管理。 非常有用的一个。 它是从codeplex下载的,但是目前它不可用,codeplex将会关闭,同样的应用程序工具现在可以在GttHub中使用。 以下链接说明了如何使用此工具以及可供下载的应用程序。
在SQL Server Management Studio中
右键单击要导入的数据库,单击“任务”>“导出数据层应用程序”,然后将数据库导出到本地.dacpac文件。
在本地目标SQL Server实例中,您可以右键单击“数据库”>“导入数据层应用程序”,一旦它在本地,您就可以执行备份和还原数据库等操作。
2022 年 Management Studio 似乎缺少该功能。这是我使用Azure Data Studio的方法:
sp_configure 'contained database authentication', 1; GO RECONFIGURE; GO
sp_configure 'contained database authentication', 1; GO RECONFIGURE; GO
导入登录名并创建用户后,但未设置其默认架构。 如果需要需要手动处理的默认 shcema。 在这种情况下:打开到本地副本的管理员连接并运行: USE [imported-db]; ALTER USER imported-user WITH DEFAULT_SCHEMA = whatever;
USE [imported-db]; ALTER USER imported-user WITH DEFAULT_SCHEMA = whatever;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.