【问题标题】:Uploading local database from SQL Server on-prem to Azure将本地数据库从本地 SQL Server 上传到 Azure
【发布时间】:2019-12-24 10:58:25
【问题描述】:

目前我正在做以下事情:

  1. 检查SQL包是否安装并获取目录
  2. 使用 SQL 包创建数据库的 bacpac
  3. 使用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 文件)。更多详情请参考docs.microsoft.com/en-us/sql/relational-databases/…
  • 我是这么认为的,您是否知道是否有其他方法可以使用 PS 以编程方式创建 bacpac?我想删除安装 SQLPackage 以运行此脚本的要求。
  • 据我所知,SQLPackage 是使用命令行创建 bacpac 文件的唯一方法。此外,您可以使用Azure Database Migration Service 将本地 SQL 迁移到 Azure。更多详情请参考docs.microsoft.com/en-us/azure/dms/…
  • 您还有其他顾虑吗?
  • 不,我后来做了很多研究,我相信你是对的。您可以添加您的评论作为答案,我会接受。

标签: sql-server powershell azure-sql-database


【解决方案1】:

根据我的研究,我们无法跳过 #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 Database Migration Service 将本地 SQL 迁移到 Azure。关于如何用 PowerShell 实现,请参考document

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2021-07-03
    • 2021-06-15
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多