- - PR -
SQLServer2000のストアドでバックアップ
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-12-11 09:49
いつもお世話になります。
現在、SQLServer2000のストアドでDBのバックアップをととうとおもっているのですが、うまくいきません。 環境はVB6(SP5)、SQLServer2000です。 VB側から、「DB名」、「デバイス名」を渡して、バックアップを取りたいのです。 ■ストアド /************************ STR ************************/ CREATE PROCEDURE TEST ( /*----- パラメータ str -----*/ @Database_Name VARCHAR(20), @Device_Name VARCHAR(20), @PM_strFormatFlg VARCHAR(1) /*----- パラメータ end -----*/ )AS /*------- 変数 str ---------*/ declare @err_code int /*------- 変数 end ---------*/ if @PM_strFormatFlg = '0' BACKUP DATABASE [@Database_Name] TO [@Device_Name] WITH FORMAT, NOUNLOAD , NAME = N'バックアップ', STATS = 10 else BACKUP DATABASE [@Database_Name] TO [@Device_Name] WITH NOFORMAT, NOINIT , NOUNLOAD , NAME = N'バックアップ', NOSKIP , STATS = 10 end select @err_code = @@error if @err_code <> 0 begin goto err_step end return (0) err_step: return (@err_code) GO /************************ END ************************/ です。 クエリアナライザーから Execute 'testdb', 'datdump', 1 見たいな感じで実行すると下記のようなエラーが返ってきました。 /************************ ERR ************************/ sysdevicesにバックアップデバイス '@Device_Name'のエントリがありません。 sysdevicesを更新、ステートメントを実行してください。 /************************ ERR ************************/ どうも、「DB名」、「デバイス名」を引数にすると、エラーになるようです。 (リテラルで記述すると、うまいこと実行できました。) 変数の使い方が間違っているのでしょうか? ご指摘よろしくお願いします。 後、リテラルで書いた場合、動くのですが、 IF文で、フォーマットするかしないかを判断しているのですが、 わざと、容量がたりないDISKでフォーマットする方で実行した場合、 「容量がたりません。」とエラーになります。 フォーマットするのに容量が足りないとできないのでしょうか。 それとも、構文が間違っているのでようか? インターネットで調べたのですが、 この手の物があんまりありません。ヘルプ通りにやっているのですが、 うまくいきません。 よろしくお願いします。 |
1