2017-06-22 9 views
0

SQLPackage.exeを使用してAzureデータベースのバックアップをローカルマシンに自動化しようとしています。私は毎晩それが上書きされないようにファイル名に日付を追加しようとしています。 次の行には、日付をピックアップしますが、その後、私は日付が付いたSQLPackage.exeのファイル名

+%date%+ 
+%date 
を使用してみましたが

CMD

"C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe" /Action:Export /ssn:SERVER_NAME_HERE /sdn:DATABASE_NAME /su:USERNAME /sp:PASSWORD /tf:C:\Users\William\Desktop\BackupTest\BACKUPFILE'%date%'.bacpac 

ERROR

*** Unrecognized command line argument '23/06/2017'.bacpac'. 

の下に表示されるエラーで実行中のバックアップを停止します

その他のオプションは運がありません。誰でも何かを提案できますか?

+1

なぜあなたはそれをまったくエスケープしようとしていますか?スラッシュについて文句を言わない限り、単に '%date%'はうまくいきます。そのような場合は、ここのように壊すことができますhttps://stackoverflow.com/questions/1192476/format-date-and-time-in-a-windows-batch-script – kichik

+0

リンクをありがとう。 %DATE:〜10,4%_%DATE:〜7,2%_%DATE:〜4,2%私に2017_06_23を与えました – WillNZ

答えて

1

以下の例で説明するように、PowerShellを使用して追加できます。

のParam( [真= $必須パラメータ(位置= 0、)] [文字列] $ ServerNameの )

CLS

試し{ ((は、Get-PSSnapinコマンド-Name SQlServerCmdletSnapin100場合 - errorActionというSilentlyContinueという)-eq $ nullを){ のAdd-PSSnapinコマンドSQlServerCmdletSnapin100 }} キャッチ{ 書き込みエラーが 終了 "このスクリプトはSQLServerCmdletSnapIn100スナップインを必要とする" }

$ script_path =分割経路-parent $ MyInvocation.MyCommand.Definition

$ sqlを= "SELECT 名名NOT IN sys.databases FROM ( 'マスター'、 'モデル'、 'MSDB'、 'tempdbの'、 '分布') "

$データ=起動-sqlcmdの-Query $ SQL -ServerInstance $ ServerNameの-Database

$データをマスターします| ForEach-オブジェクト{

$DatabaseName = $_.name 
$now=get-Date 

# 
# Run sqlpackage 
# 
&"C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe" ` 
    /Action:extract ` 
    /SourceServerName:$ServerName ` 
    /SourceDatabaseName:$DatabaseName ` 
    /TargetFile:$script_path\DACPACs\$DatabaseName$now.dacpac ` 
    /p:ExtractReferencedServerScopedElements=False ` 
    /p:IgnorePermissions=False 

}

ホープこのことができます。

よろしく、

アルベルトMorilloもっと根本的

SQLCoffee.com

1

は、それがバックアップデータベースにBACPACを使用することをお勧めしていません。 Bacpacは負荷のために、&は、Azureのデータをオンデマンドで移動します。

AzureのSQLDBには、デフォルトでバックアップサービスがオンになっているため、サービスによってスケジュールされたバックアップが既に提供されています。

また、正しくbacpacを作成するには、データベースをコピーしてからコピーからbacpacを作成する必要があります。それ以外の場合、トランザクションの一貫性は保証されず、最悪の場合、bacpacのインポートが失敗する可能性があります。

関連する問題