在 Azure 订阅中存储 SQL 凭据

在 Azure 订阅中存储 SQL 凭据

作为持续集成程序的一部分,我想将生产数据库的副本克隆到我们的 QA 服务器上。

Azure 中似乎还没有克隆数据库的方法,因此我通过 Blob 存储导出和导入数据库。

我在使用以下命令时遇到了问题(省略不重要的内容):

$SqlCtx = New-AzureSqlDatabaseServerContext -ServerName $ServerName -UseSubscription
$exportRequest = Start-AzureSqlDatabaseExport -SqlConnectionContext $SqlCtx -StorageContainer $Container -DatabaseName $DatabaseName -BlobName $BlobName

返回以下错误。

Start-AzureSqlDatabaseExport:无法绑定参数“SqlConnectionContext”。无法将“Microsoft.WindowsAzure.Commands.SqlDatabase.Services.Server.ServerDataServiceCertAuth”类型的值“Microsoft.WindowsAzure.Commands.SqlDatabase.Services.Server.ServerDataServiceCertAuth”转换为“Microsoft.WindowsAzure.Commands.SqlDatabase.Services.Server.ServerDataServiceSqlAuth”类型。

我很确定这是因为我的订阅中没有任何 SQL 凭据,因此 SQL 连接不知道如何连接。有人知道我该如何实现这一点吗?

答案1

正如您所指出的,您需要提供 Sql 凭据。一种方法是使用 向用户索要凭据Get-Credential,例如开始-AzureSqlDatabaseExport

$credential = Get-Credential
$SqlCtx = New-AzureSqlDatabaseServerContext -ServerName $ServerName -Credentials $credential
$StorageCtx = New-AzureStorageContext -StorageAccountName $StorageName -StorageAccountKey $StorageKey
$Container = Get-AzureStorageContainer -Name $ContainerName -Context $StorageCtx
$exportRequest = Start-AzureSqlDatabaseExport -SqlConnectionContext $SqlCtx -StorageContainer $Container -DatabaseName $DatabaseName -BlobName $BlobName

Azure Sql 服务器凭据与 Azure 凭据分开管理(就像 VM 登录一样),这就是为什么提供 Azure 订阅凭据是不够的。

相关内容