有谁知道如何将 SQL Azure 数据库复制到我的开发机器上?我不想再花钱在云中拥有一个开发数据库,但这是获取生产数据的最佳方式。我将我的生产数据库复制到一个新的开发数据库,但我希望在本地拥有相同的数据库。
有什么建议么?
有谁知道如何将 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 导入数据层应用程序的过程:http: //msdn.microsoft.com/en-us/library/hh710052.aspx。
将 Azure 数据库数据复制到本地数据库:现在您可以使用 SQL Server Management Studio 执行此操作,如下所示:
“下一个”/“下一个”/“完成”
在 SQL Server 2016 Management Studio 中,将 azure 数据库获取到本地计算机的过程已得到简化。
右键单击要导入的数据库,单击任务 > 导出数据层应用程序,然后将数据库导出到本地 .dacpac 文件。
在您的本地目标 SQL 服务器实例中,您可以右键单击Databases > Import data-tier application,一旦它在本地,您就可以执行诸如备份和恢复数据库之类的操作。
我只是想添加一个简化版本的dumbledad 答案,因为它是正确的。
我认为现在容易多了。
此外,我使用 Sql Backup 和 FTP ( https://sqlbackupandftp.com/ ) 对安全的 FTP 服务器进行日常备份。我只需从那里提取一个最近的 BACPAC 文件,然后将其导入同一个对话框,这样可以更快、更轻松地创建本地数据库。
您还可以在 Windows Azure 管理门户中查看SQL Azure 数据同步。它允许您检索和恢复整个数据库,包括 SQL Azure 和 SQL Server 之间的架构和数据。
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
这很容易。这对我有用……就将 Azure SQL 数据库下载到本地计算机而言……:
但是,请注意,如果您还需要 DATA 以及脚本,请务必在开始生成之前检查“高级选项”...向下滚动到“脚本的数据类型”,并确保您有“架构和数据”...或任何适合您的东西。
它会给你一个很好的 SQL 脚本文件,然后可以在你的本地机器上运行,它会创建数据库并用所有数据填充它。
请记住,在我的情况下,我没有 FK 或其他限制......而且,它不是很多数据。
我一般不建议将此作为备份机制...
在 SQL Server 管理工作室中
右键单击要导入的数据库,单击任务 > 导出数据层应用程序,然后将数据库导出到本地 .dacpac 文件。
在您的本地目标 SQL 服务器实例中,您可以右键单击数据库 > 导入数据层应用程序,一旦它在本地,您就可以执行备份和恢复数据库等操作。
我无法让 SSIS 导入/导出工作,因为我收到错误“插入只读列“id”失败”。我也无法让 http://sqlazuremw.codeplex.com/工作,并且上面指向 SQL Azure 数据同步的链接对我不起作用。
但我发现了一篇关于 BACPAC 文件的优秀博客文章:http: //dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/
在帖子的视频中,博文的作者经历了六个步骤:
在 Azure 管理门户中创建或转到存储帐户。你需要 Blob URL 和存储帐户的主访问密钥。
博客文章建议为 bacpac 文件创建一个新容器,并建议为此使用Azure 存储资源管理器。(注意,您需要 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 数据库的副本。如果您不想先将 BACPAC 文件复制到本地,该向导还可以直接连接到 blob-store 以获取 BACPAC 文件。
最后一步可能仅在 SQL Server Management Studio 的 SQL Server 2012 版(即我正在运行的版本)中可用。我在这台机器上没有早期的检查。在博客文章中,作者使用命令行工具 DacImportExportCli.exe 进行导入,我相信它可以在http://sqldacexamples.codeplex.com/releases获得
关于“我无法让 SSIS 导入/导出工作,因为我收到错误“插入只读列“id”失败”。这可以通过在映射屏幕中指定你想要的来解决允许插入标识元素。
之后,一切正常,使用 SQL 导入/导出向导从 Azure 复制到本地数据库。
我只有 SQL Server 2008 R2 附带的 SQL 导入/导出向导(运行良好)和 Visual Studio 2012 Express 来创建本地数据库。
接受的答案已过时。我找到了更好的答案:使用导入数据层应用程序
更多详细信息请参阅这篇文章: 将 Azure SQL 数据库还原到本地服务器
我总是使用导入/导出功能,这似乎是最简单的一种。
第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 步:为要恢复的数据库命名。
现在你会看到一切都是绿色的!
阅读我的带有图表的博客。
您可以使用新的 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
下载 Optillect SQL Azure Backup - 它有 15 天的试用期,因此足以移动您的数据库 :)
对我来说,诀窍是开始在空数据库上复制 PK/FK/约束,然后在导入数据时暂时禁用约束(请参阅https://stackoverflow.com/a/161410)。
更确切地说:
希望这可以帮助!
现在您可以使用 SQL Server Management Studio 来执行此操作。
如果有人想要一个免费且有效的选项(并且不介意手动操作)将数据库备份到本地,则使用最新版本 Microsoft Visual Studio 2015 社区版(免费)或专业/高级/终极版中内置的架构和数据比较功能版。它就像一个魅力!
我有 Azure 的 BizPark 帐户,没有办法直接备份数据库而不付费。我在 VS 中发现了这个选项。
您好,我正在使用 SQLAzureMW 工具进行 SQLAzure DB 迁移和管理。非常有用的一个。它是从 codeplex 下载的,但目前它不可用,codeplex 将关闭,相同的应用程序工具现在在 GttHub 中可用。下面的链接解释了如何使用这个工具,也可以下载应用程序。