sql-server - 将本地数据库从本地 SQL Server 上传到 Azure
问题描述
目前我正在做以下事情:
- 检查是否安装了 SQL 包并获取目录
- 使用 SQL Package 创建数据库的 bacpac
- 使用导入数据库
New-AzSQLDatabaseImport
## Check SQL Server package installation
$Global:folder = Get-ChildItem "C:\Program Files\Microsoft SQL Server\" | Where { Is-Numeric $_.name -ne $null}
$Global:folder = ($folder | Sort-Object @{e={$_.name -as [int]}} -Descending)[0].name
if (!(Test-Path "C:\Program Files\Microsoft SQL Server\$folder\DAC\bin\sqlpackage.exe") ) {
Set-Output "[!] SqlPackage is not installed" -colour red -time;
Set-Output "[!] Install SQLPackage and re-run script" -colour red -time;
break;
}
else {
Set-Output '[+] Sqlpackage is installed' -colour green -time;
}
##### Generate bacpac file for upload
Try {
$BacPac_Backup = '& "C:\Program Files\Microsoft SQL Server\ENTER-NUM\DAC\bin\sqlpackage.exe" /Action:Export /ssn:. /sdn:"ENTER-DB" /tf:"c:\ENTER-DB.bacpac"'
$BacPac_Backup = $BacPac_Backup -replace('ENTER-NUM', $folder)
$BacPac_Backup = $BacPac_Backup -replace('ENTER-DB' , $TRIS5_DatabaseName)
Invoke-Expression $BacPac_Backup > $null 2>&1
Set-Output "[+] Bacpac file created" -colour green -time;
}
Catch {
Set-Output "[+] Unable to create bacpac file" -colour red -time;
break;
}
我想知道的是,是否有一种方法可以跳过 #2 并使用 PowerShell 直接从 SQL Server 将数据库上传到 Azure。我知道您可以在 SSMS 中执行此操作,但我找不到在 PowerShell 中自动执行此操作的方法。
解决方案
根据我的研究,我们无法跳过 #2(创建 bacpac 文件),而 SQLPackage 是使用命令行创建 bacpac 文件的唯一方法。有关详细信息,请参阅https://docs.microsoft.com/en-us/sql/relational-databases/data-tier-applications/deploy-a-database-by-using-a-dac?view=sql -server-ver15#using-a-net-framework-application。
此外,我们还可以通过Azure 数据库迁移服务将本地 SQL 迁移到 Azure。关于如何用 PowerShell 实现,请参考文档。
推荐阅读
- asp.net-mvc - 当用户需要更新信息时,Asp.net MVC 4 重定向
- html - 如何在 ReactJS 中的 div 中放置元素?
- amazon-cloudwatch - 如何在 python 用户定义函数中定义 amazon-cloudwatch boto3.client
- java - LibGDX 模型实例颜色未传递给顶点着色器
- r - 使用粘贴在数据集中自动命名
- python - 尝试在 python 中进行标签编码时,ValueError 包含新标签
- opencv3.0 - 使用单应矩阵的 cv2 姿态估计
- reactjs - 地图组件下的锚链接不可点击
- bash - Bash for 循环如何读取脚本参数?
- php - 向 ACF 表单添加验证错误时遇到问题