2017-01-04 4 views
1

コマンドレットに問題がないと仮定して、デバッグする方法がわかりません。自動化されたSQLエクスポートをオートメーションワークフローに置き換えようとしていますが、Start-AzureSqlDatabaseExportを動作させることができないようです。次の警告メッセージとエラーメッセージが表示され続けます。Start-AzureSqlDatabaseExportオブジェクト参照がオブジェクトのインスタンスに設定されていません

d4fc0004-0c0b-443e-AD1B-310af7fd4e2a:[ローカルホスト]:クライアントセッションID: 'c12c92eb-acd5-424d-97dc-84c4e9c4f914-2017-01-04 19:00:23Z'

d4fc0004 -0c0b-443e-AD1B-310af7fd4e2a:[ローカルホスト]:クライアント要求ID: 'd534f5fd-0fc0-4d68-8176-7508b35aa9d8-2017-01-04 19:00:33Z'

スタートAzureSqlDatabaseExport:オブジェクト参照がオブジェクトのインスタンスに設定されていないDBBACKUPで

:11文字:11 + + CategoryInfo:NotSpecified:(:) [START-AzureSqlDatabaseExport]を、とNullReferenceException + FullyQualifiedErrorId:Microsoft.WindowsAzure.Commands.SqlDatabase.Database.Cmdlet.StartAzureSqlDatabaseExport

これは他のいくつかの質問とよく似ていますが、回答が得られていないか、または該当しないようです。 Powershell環境でも同様の手順で作業していました。私はこの手順をAzureからの自動エクスポートに置き換えました。これは今のところ貧しい選択のようです!私は、たとえばデータベースの代わりにsqlcontextとdatabasenameを使用して、いくつかのバリエーションを試しました。

workflow DBBackup { 

param(
    [parameter(Mandatory=$true)] 
    [string] $dbcode 
    ) 

$cred = Get-AutomationPSCredential -Name "admindbcredentials" 
$VerbosePreference = "Continue" 

inlineScript { 

    $dbcode = $using:dbcode 
    $cred = $using:cred 

    if ($dbcode -eq $null) 
    { 
     Write-Output "Database code must be specified" 
    } 
    Else 
    { 
     $dbcode = $dbcode.ToUpper() 

     $dbsize = 1 
     $dbrestorewait = 10 
     $dbserver = "kl8p7d444a" 
     $stacct = $dbcode.ToLower() 
     $stkey = "***storagekey***" 


     Write-Verbose "DB Server '$dbserver' DB Code '$dbcode'" 
     Write-Verbose "Storage Account '$stacct'" 
     $url = "https://$dbserver.database.windows.net"    
     $sqlctx = New-AzureSqlDatabaseServerContext -ManageUrl $url -Credential $cred 
     # $sqlctx = New-AzureSqlDatabaseServerContext -ManageUrl $url -Credential $cred 
     $stctx = New-AzureStorageContext -StorageAccountName $stacct -StorageAccountKey $stkey 
     $dbname = "FSUMS_" + $dbcode   
     $dt = Get-Date 
     $timestamp = $dt.ToString("yyyyMMdd") + "_" + $dt.ToString("HHmmss") 
     $bkupname = $dbname + "_" + $timestamp + ".bacpac" 

     $stcon = Get-AzureStorageContainer -Context $stctx -Name "backups" 
     $db = Get-AzureSqlDatabase -Context $sqlctx -DatabaseName $dbname 

     Write-Verbose "Backup $dbname to $bkupname in storage account $stacct" 
     Start-AzureSqlDatabaseExport $sqlctx -DatabaseName $dbname -StorageContainer $stcon -BlobName $bkupname   
    } 
} 
} 

答えて

0

代わりNew-AzureRmSqlDatabaseExportをお試しください:

はここ****に置き換え敏感な部分で私のコードです。このコマンドは、エクスポートステータスオブジェクトを返します。同期エクスポートを実行する場合は、ループ内で「エクスポートステータス」をチェックできます。 InlineScript前にワークフローで

$cred = Get-AutomationPSCredential -Name "admincredentials" 

    (where admincredentials was an asset with my admin login credentials) 

とのInlineScript内側:一部のランブックはこれを必要としていないようです

Add-AzureAccount $cred 
Select-AzureSubscription "My subscription" 

次の行を追加する

+2

それはそれを認識しないと私に伝えています。私はリソースグループを使用するように変換していない - それは問題になる可能性がありますか?私はちょうど既定のリソースグループを使用しました。 エラーメッセージ: New-AzureRmSqlDatabaseExport: 'New-AzureRmSqlDatabaseExport'という用語は、コマンドレット、 関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、 のパスが正しいことを確認してから、もう一度やり直してください。 – fsbf

+0

AzureRMモジュールがインストールされているかどうかを確認してください。 Get-Module -ListAvailable AzureRM *を使用します。そうでない場合。インストールモジュールのAzureRMとInstall-AzureRMを実行します。もう一度やり直してください。New-AzureRmSqlDatabaseExport –

+1

私はこの時点でオートメーションからこれをやろうとしています。 AzureRM.Sql用のローカルPowerShellのバージョンは2.4.0ですが、オートメーションから実行すると1.0.3です。 – fsbf

0

は、問題を修正しましたしかし、おそらく常にそれを含めることをお勧めします。

+0

Azureのリソースを操作するときは、常に認証が必要です。さもなければアズールはあなたが誰であるか、何かをすることが許されているかどうかを知らない。 –

+0

Azure Automationはデフォルトの資格情報とサブスクリプションを提供しますが、それに頼らないのが最良だと思います。私の場合、間違った理由がないため、間違ったサブスクリプションを選択したことがあります(デフォルトではありません)。 – fsbf

関連する問題