我们在vm上有一个sql服务器,还有一个Azure SQL数据库,现在我们想将vm db迁移/恢复到Azure db。我知道如何通过ssms手动进行操作。但是我们要计划它,因为我们需要每天运行它。我找不到T-SQL脚本来执行这些操作。有什么办法吗?
答案 0 :(得分:0)
您可以将下面的PowerShell脚本与Azure Automation结合使用,以安排bacpac的创建和到Azure SQL数据库的导入过程。
首先,您需要创建一个Blob存储帐户,然后在该存储帐户上创建一个容器。
Set-AzureSubscription -CurrentStorageAccountName “YourStorageAccountName” -SubscriptionName $subscription
New-AzureStorageContainer -Name “mycontainer” -Permission Off
现在,您需要使用SqlPackage创建一个bacpac。您可以使用Windows上的“计划任务”或使用PowerShell来计划bacpac的创建。
SqlPackage /Action:Export /SourceServerName:SampleSQLServer.sample.net,1433 /SourceDatabaseName:SampleDatabase /TargetFile:"F:\Temp\SampleDatabase.bacpac"
接下来使用PowerShell将bacpac上传到存储帐户。
Set-AzureStorageBlobContent -Container “mycontainer” -File “F:\Temp\SampleDatabase.bacpac”
现在,您可以将bacpac作为新数据库导入到Azure SQL数据库逻辑服务器中:
Get-AzureStorageKey –StorageAccountName “YourStorageAccountName”
$primarykey=(Get-AzureStorageKey -StorageAccountName “YourStorageAccountName”).Primary
$StorageUri=(Get-AzureStorageBlob -blob ‘SampleDatabase.bacpac’ -Container ‘mycontainer’).ICloudBlob.uri.AbsoluteUri
答案 1 :(得分:0)
除了导入/导出,您还可以使用快照复制或事务复制。参见Replication to SQL Database single and pooled databases。
答案 2 :(得分:0)
您可以使用SQL Data Sync,它将每天进行几次同步,您可以自行配置时间间隔。
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-sync-data
混合数据同步:使用数据同步,可以使本地数据库和Azure SQL数据库之间的数据保持同步,以启用混合应用程序。此功能可能会吸引正在考虑迁移到云并希望将其某些应用程序放入Azure的客户。