Date: Mon, 6 Oct 2003 14:37:09 +0900
From: SystemFarms 田中淑子 <who@example.co.jp>
はじめまして。田中と申します。
VB6.0 でパッケージソフトの開発を行っています。
現在、MSDE7.0、もしくはMSDE2000、もしくはSQLServerをデータベースとするソフトを開発しているのですが、
このデータベースのバックアップ・リストアを実行すると、
端末により、実行後のデータベースに接続できないという現象がおきています。
この現象が起きる端末にインストールされているMSDEのバージョンは7.0、2000と様々で、
MSDEのバージョンによるものでは無いようです。
また、同SQLをコマンドラインから実行すると、正常に処理されます。
実行スクリプトは以下の通りです。
データベース名 : dbName
MSDEデータベース保存先:C:\Program Files\MSSQL7\Data\
バックアップファイル名:C:\xxx\xxx\backupfile
MSDEユーザ名:userid
MSDEパスワード:pass
(上記ユーザはsaと同権限があるものとします。)
-- バックアップ -------------------------------------------------------------------------------------------------
Dim cn As ADODB.Connection
Dim strSQL As String
strSQL = "BACKUP DATABASE LookDataBase TO DISK = 'C:\xxx\xxx\backupfile' WITH INIT"
Set cn = New ADODB.Connection
cn.ConnectionTimeout = 0
cn.CommandTimeout = 0
cn.Open "Provider=SQLOLEDB.1;User ID = userid;Password = pass;Data Source = dbName;Initial Catalog = master"
cn.Execute strSQL
cn.Close
Set cn = Nothing
-- リストア -------------------------------------------------------------------------------------------------
Dim cn As ADODB.Connection
Dim strSQL As String
strSQL = "RESTORE DATABASE dbName " & vbCrLf & _
"FROM DISK = 'C:\xxx\xxx\backupfile'" & vbCrLf & _
"with RECOVERY, REPLACE" & vbCrLf & _
" ,MOVE ' dbName_DAT' to 'C:\Program Files\MSSQL7\Data\dbName.mdf'" & vbCrLf & _
" ,MOVE ' dbName_LOG' to 'C:\Program Files\MSSQL7\Data\dbName.ldf'"
Set cn = New ADODB.Connection
cn.ConnectionTimeout = 0
cn.CommandTimeout = 0
cn.Open "Provider=SQLOLEDB.1;User ID = userid;Password = pass;Data Source = dbName;Initial Catalog = master"
cn.Execute strSQL
cn.Close
Set cn = Nothing
---------------------------------------
いろいろ検証した結果、このバックアップ、リストアができない端末で実行すると、
cn.Execute strSQL
を実行した後、バックアップ、リストアの処理が終了しない内に
cn.Close
を実行している為、バックアップ、リストアに失敗してしまうようです。
cn.Execute strSQL実行後に、メッセージボックスを表示し、一旦中断させると、正常にできました。
しかし、単に次の処理に移るまで、実行を待たせるだけでは失敗してしまいます。
(10秒メッセージボックスを表示させると正常に動くのに、処理に1分間ウェイトをかけても失敗します。)
正常にバックアップ・リストアができる端末と、できない端末とで性能の違いはさほどありません。
現象の起きるOSは現在のところWindows2000ですが、Windows2000に限った現象かどうかは不明です。
現在は、cn.Execute strSQL を実行した後に、バックアップファイルが作成できているか、または
リストア後のデータベースに接続可能か、という処理を挟んで、実行しているのですが、
なぜ端末によってこのような現象が起きるのか原因は不明なままです。
なぜこのような現象が発生するのか、または、バックアップ、リストアが正常に終了したという情報をどこからか得ることはできないのか、
何か情報をお持ちの方いらっしゃいましたらご教授願います。
長々と申し訳ありません。
よろしくお願い致します。
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|