電子書籍の厳選無料作品が豊富!

お世話になります。どなたかご教示いただければ助かります。
現在SQL SERVER 2005 EXPRESS EDITIONで運用しているデータベースのバックアップを定期的に取りたいと思っております。
クライアントはAccess2000のADPを利用しております。VBAのコードから、ADODB.Commandオブジェクトを利用してBACKUP DATABASE のコマンドで問題なく、バックアップファイルは作成できるのですがRESTORE DATABASEを使用すると、どのパソコンからもアクセスしていないのに「データベースは使用中なので、排他アクセスを獲得できません」とメッセージが出てしまいます。どうすれば回避して復元できるでしょうか。

お忙しいところ申し訳ありませんが、ご教示いただければ助かります。

A 回答 (3件)

#1,#2です。


この質問は、「既定のデータベースがリストア対象のデータベースと同じ場合に、ADO経由でリストアを実行するための方法」だったと思いましたが、そちらの方はもういいわけですかね。
別の質問の方の「バックアップを自動化するツール」ということでsqlcmdをご紹介し、そこにsqlcmdの構文をご紹介したのですが、osqlでも構文は殆ど同じです。
(-Qパラメータを使います)
    • good
    • 0
この回答へのお礼

ご教授ありがとうございました。

バックアップ、リストアのどちらも、どのようにするのが一番簡単で使いやすいか模索しておりましたが、いろいろとご回答いただくことができ大変参考になりました。

今後ともよろしくお願いいたします。

お礼日時:2009/12/15 08:22

#1です。

もうひとつの質問にも書きましたが、
RESTORE DATABASE...

USE master;RESTORE DATABASE...
にするだけですよ。

この回答への補足

いつも教えていただき、本当にありがとうございます。
とりあえず試しに、バックアップのバッチファイルを作成して、MSDE2000がインストールされているパソコンで実行してみました。DOSプロンプトが表示されてOSQLが実行され、ログインまではできます。しかし、バックアップ処理は実行されませんでした。それでプロンプトの1>に手入力でBACKUP・・・と入力してからGOを実行するとバックアップファイルが作成できました。バックアップまで自動実行するにはどうしたらいいのでしょうか。下記が命令です。

osql -U sa -P sa -S EPSON140205644
GO
USE MASTER
GO
BACKUP DATABASE IBSDATA TO DISK = 'C:\TEMP\20091212BK.BAK'
GO

素人質問で大変申し訳ありませんが、ご教示のほどよろしくお願いいたします。

補足日時:2009/12/13 11:41
    • good
    • 0

リストアしようとしているプロセス自体がアクセスしているからそうなります。


通常データベースの復元はmasterからやります。
USE master
GO
RESTORE DATABASE xxx.......
GO

この回答への補足

お忙しいところ、ご教示いただき、ありがとうございます。
できれば、Accessのボタンから処理を実行して、バックアップと復元をできるようにしたいと思っております。
もしかしますと、Accessのボタンからご指摘いただいたバッチファイルを実行すればいいのでしょうか。バッチファイルの作成方法も合わせてご教示いただければ大変助かります。

どうぞよろしくお願いいたします。

補足日時:2009/12/11 18:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!