は、sql Microsoft Azure SQL Management Library 0.51.0-prereleaseサポートが直接AzureストレージにSQLデータベース.bacpacファイルをエクスポート:
は、ここに私の考えをまとめた擬似コードのような非常に単純な例です。
sqlManagementClient.ImportExport.Export(resourceGroup, azureSqlServer, azureSqlDatabase,exportRequestParameters)
を使用してをエクスポートできます。 bacpacファイル紺碧の記憶。
しかし、Microsoft Azure SQL管理ライブラリSDKの最新バージョンでは、ImportExportが見つかりませんでした。したがって、Microsoft SQL Azure SQL管理ライブラリSQL 5.01.0-prerelease SDKしか使用できませんでした。
SQL Azure SQL管理ライブラリを使用してSQLバックアップを空白のBLOBストレージにエクスポートする方法の詳細は、以下の手順とコードを参照してください。
前提条件:
レジストリのAzure AD内のAppとそのためのサービスの原則を作成します。レジストリアプリケーションとアクセストークンの取得方法の詳細な手順は、documentを参照してください。
詳細コード:
注意:ご登録の紺碧のAD情報とのclientId、tenantId、秘密鍵、subscriptionIdを交換してください。azureSqlDatabase、resourceGroup、azureSqlServer、adminLogin、adminPassword、storageKey、storageAccountを独自のSQLデータベースとストレージに置き換えます。このような
static void Main(string[] args)
{
var subscriptionId = "xxxxxxxx";
var clientId = "xxxxxxxxx";
var tenantId = "xxxxxxxx";
var secretKey = "xxxxx";
var azureSqlDatabase = "data base name";
var resourceGroup = "Resource Group name";
var azureSqlServer = "xxxxxxx"; //testsqlserver
var adminLogin = "user";
var adminPassword = "password";
var storageKey = "storage key";
var storageAccount = "storage account";
var baseStorageUri = $"https://{storageAccount}.blob.core.windows.net/brandotest/";//with container name endwith "/"
var backName = azureSqlDatabase + "-" + $"{DateTime.UtcNow:yyyyMMddHHmm}" + ".bacpac"; //back up sql file name
var backupUrl = baseStorageUri + backName;
ImportExportOperationStatusResponse exportStatus = new ImportExportOperationStatusResponse();
try
{
ExportRequestParameters exportRequestParameters = new ExportRequestParameters
{
AdministratorLogin = adminLogin,
AdministratorLoginPassword = adminPassword,
StorageKey = storageKey,
StorageKeyType = "StorageAccessKey",
StorageUri = new Uri(backupUrl)
};
SqlManagementClient sqlManagementClient = new SqlManagementClient(new Microsoft.Azure.TokenCloudCredentials(subscriptionId, GetAccessToken(tenantId, clientId, secretKey)));
var export = sqlManagementClient.ImportExport.Export(resourceGroup, azureSqlServer, azureSqlDatabase,
exportRequestParameters); //do export operation
while (exportStatus.Status != Microsoft.Azure.OperationStatus.Succeeded) // until operation successed
{
Thread.Sleep(1000 * 60);
exportStatus = sqlManagementClient.ImportExport.GetImportExportOperationStatus(export.OperationStatusLink);
}
Console.WriteLine($"Export DataBase {azureSqlDatabase} to Storage {storageAccount} Succesfully");
}
catch (Exception exception)
{
//todo
}
}
private static string GetAccessToken(string tenantId, string clientId, string secretKey)
{
var authenticationContext = new AuthenticationContext($"https://login.windows.net/{tenantId}");
var credential = new ClientCredential(clientId, secretKey);
var result = authenticationContext.AcquireTokenAsync("https://management.core.windows.net/",
credential);
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the JWT token");
}
var token = result.Result.AccessToken;
return token;
}
結果:
1.Send要求がデータベースにエクスポート動作状態を監視するための要求を送信Azureブロブストレージ
2.ContinueにエクスポートするSQL Serverの開始を指示します。
3.Finish操作を輸出しました。
それをローカルファイルに書き出し、Azure Storage Data Movement Libraryを介してBlobストレージにアップロードしますか? https://www.nuget.org/packages/Microsoft.Azure.Storage.DataMovement –