MSDE FunClub
Microsoft Data Engine FunClub
MSDE技術者向けメーリングリスト過去ログ[1205]番
 
[TOP]>[MSDE技術者向けメーリングリスト過去ログ(1205番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
MSDE のバックアップ・リストアについて

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 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。