行いたい事
「aaaa_@Target」というDB名に対してバックアップ実行し、「aaaa_@Target_実行日時」のバックアップファイル名を取得したいです。
どうしても分からない部分が、固定文字列aaaaと可変文字列@Targetを連結させる部分です。
ここがどうにかなれば解決するのですがうまくいかず、方法をご存知の方がいらっしゃればお教え頂きたいと思います。
バッチファイルでsqlcmdを実行してSQLファイルを実行。
変数を渡して処理をさせたいと考えています。
実施した事
バッチファイルの設定
SET Target=バックアップ取得したいDB SQLCMD -E -S localhost -i aaaa.sql -v Target=%Target%
aaaa.sqlの設定
DECLARE @backupsql varchar(2048); DECLARE @Target varchar = '$(Target)' DECLARE @TargetDB varchar = 'aaaa' + '_' + @Target DECLARE @TargetF varchar = @TargetDB + '_' SET @backupsql='BACKUP DATABASE aaaa + @Target TO DISK=''@TargetF'+LEFT(REPLACE(REPLACE(REPLACE(convert(varchar,GETDATE(),121),'-',''),':',''),' ',''),14)+'.bak'' WITH INIT'; EXEC (@backupsql);
よろしくお願いいたします。
> 可変文字列@Targetを連結
何がどう可変なんでしょうか?
言葉足らずで失礼しました。
バッチファイルの方で変数設定しており、同じような名前の複数DBに対してそれぞれバッチファイル側で変数Targetに設定をして同じSQLを実行させるという方法になります。
その為、可変という言葉を使用しておりました。
aaaa@%Target%
と連結するだけでは?
おっしゃっている意味が分からず申し訳ありません。
バッチファイル上で指定という事でしょうか?実行させるsqlファイル上でという事でしょうか?
私の理解不足で恐縮なのですが、方法の詳細をお教え頂けますと助かります。
バッチファイル上の質問かと思って回答しました。違うのでしょうか?
すいません、異なります。
バッチファイル上の質問ではございません。
単に変数を渡すだけならおっしゃって頂いているような方法でもよいのですが、
・処理対象DB
・出力するバックアップファイル名
上記の指定をsql内で変数組み合わせて行いたいのです。
なので、sql上での固定文字列と変数(バッチから渡した文字列)の結合をどうしたら良いでしょうか?
という質問になります。
回答1件
あなたの回答
tips
プレビュー