繁体   English   中英

将本地数据库从本地 SQL Server 上传到 Azure

[英]Uploading local database from SQL Server on-prem to Azure

目前我正在做以下事情:

  1. 检查是否安装了SQL包并获取目录
  2. 使用 SQL Package 创建数据库的 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 文件),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实现,请参考文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM