- PR -

SQL Server 7.0 から PC上の SQL Server 2005 Express への移行について

1
投稿者投稿内容
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2008-04-25 15:55
お世話になります。
大変長くなってしまいました。申し訳ありません。

ユーザーのシステム環境移行について相談させてください。
現在ユーザー環境では、SQL Server 7.0 と VB6.0 による生産管理システムが稼動しています。
このシステムを サーバー+PCから、PCのみにして SQL Server 2005 Express に移行する計画です。
補足情報として、開発環境には SQL Server 2000 SP4 がありますが、
SQL Server 7.0 の環境がなく、構築させてもらえる予定もありません。

そこで知りたいポイントは2点です。
 ・データ移行をどんな環境でも行える方法
 ・開発環境において、SQL Server 2000 のデータベースをデタッチしたものとバックアップしたファイルを
  SQL Server 2005 Express にアタッチもしくはリストアしようとすると失敗する
をご教授ください。

ホスト移行のときにデータベースの移行作業が発生するわけですが、
私が考えている手順は、
SQL Server 7.0(旧DB)でテーブルのSQLスクリプト(主キー等の情報を付加したもの)を発行し、
SQL Server 2005 Express(新DB)にテーブルを作成したのち、
旧DBからDTSによるエクスポートを LAN 経由で行う方法です。
ところが上記の方法だと、
 ・旧DBのサーバーと新DBのPCが ネットワークで繋がっていなければならない
 ・SQL Server 7.0 環境がないので手順を確認できない
 ・私自身が、DTSで旧環境から新環境へアクセスするしくみ(DNSとか?)をちゃんと説明できない。
(あるいはバックアップはあるんだけど旧サーバー壊れちゃった、とかいう場合に対応できない)
ということで、できるかどうか解らない方法でなくどんな場合でも確実に行える方法を用意する、ということになりました。


それでいろいろ調べてやってみているのですが(知りたいポイントの2点目)、
ユーザー環境を開発環境にエクスポートしたと思われる MDF ファイルがありまして、
これを SQL Server 2000 にアタッチすることはできました。
(7.0 の MDF か 2000 の MDF か解らない。もしかして違いはないのでしょうか?)
しかしこの MDF を、私が使用しているPCの SQL Server 2005 Express にアタッチすることに失敗してしまいました。
そのときのメッセージが以下です。
引用:


タイトル: Microsoft SQL Server Management Studio Express
------------------------------
Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.Express.ConnectionInfo)
-----------------------------
ADDITIONAL INFORMATION:
デバイス 'c:\\Data.MDF' のメディア ファミリが正しい形式ではありません。SQL Server はこのメディア ファミリを処理できません。
RESTORE HEADERONLY が異常終了しています。 (Microsoft SQL Server、エラー: 3241)
ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3042&EvtSrc=MSSQLServer&EvtID=3241&LinkId=20476 をクリック




バックアップファイルのリストアを試した結果です。
引用:


タイトル: Microsoft SQL Server Management Studio Express
------------------------------
サーバー 'local\\SQLEXPRESS' の復元に失敗しました。 (Microsoft.SqlServer.Express.Smo)
ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=復元+Server&LinkId=20476 をクリック
------------------------------
ADDITIONAL INFORMATION:
System.Data.SqlClient.SqlError: 'c:\\Data.MDF' で 'RestoreContainer::ValidateTargetForCreation' を試行中に、オペレーティング システムからエラー '5(アクセスが拒否されました。)' が返されました。 (Microsoft.SqlServer.Express.Smo)
ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&LinkId=20476 をクリック




これらのメッセージの意味するところが解りません。
 ・「メディアファミリを処理できません。」ということから、2000 以前と 2005 じゃエンジンが違うので無理だよ。

 ・サーバー名が違うから処理できないよ
のどちらかと考えているのですが、正しいでしょうか?
ちなみにリンク先へ飛ぶと「情報がありません」といつもの MS っぷりを発揮してくれます。

で、アタッチとバックアップがうまくいかないので途中までやっているのが、
旧環境で DTS でテーブル1本ずつデータをテキストに落として、新環境で INSERT で取り込む方法です。
「そういう方法はできないのか。できるならそれが一番確実だろう?」
とのお達しです。
このような方法は可能でしょうか?
かつ一般的でしょうか?

また他の方法はありますでしょうか、
是非ご教授のほど、よろしくお願いいたします。
ノラ
常連さん
会議室デビュー日: 2003/11/06
投稿数: 37
お住まい・勤務地: 東京都
投稿日時: 2008-04-25 16:15
http://msdn2.microsoft.com/ja-jp/library/ms189625.aspx
masterデータベースをアタッチしようとしていませんか。
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2008-04-25 16:34
早速のご返答ありがとうございます。

アタッチしようとしているファイルの中身を確認しましたが、
格納されているのはユーザーのデータベースのみで master データベース等は含まれていませんでした。

ご提示いただいたURLの記載内容についてなんですが、
sp_detach_db ストアドプロシージャ等の操作と、
Enterprise Manager や Management Studio でタスクからアタッチ・デタッチするのとは、
同じものでしょうか別物でしょうか?

引き続きよろしくお願いします。

[ メッセージ編集済み 編集者: とある根性なし 編集日時 2008-04-25 16:37 ]
Toya
会議室デビュー日: 2003/12/12
投稿数: 1
投稿日時: 2008-04-25 17:31
初めて投稿させて頂きます。

お役にたてるか分かりませんが、SQL7のDBを
別のサーバーにリストアする場合、データ領域などの
ディレクトリを同一にしないと出来ませんでした。

SQL7からSQL7なので今回とは違うかもしれませんが・・・。
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2008-04-25 18:15
ご返答ありがとうございます。
早速やってみましたがダメでした><

1. SQL Server 2000 に "C:\DATA\Data.MDF" をアタッチ。
2. アタッチしてすぐデタッチ
3. "C:\DATA\Data.MDF" を "\\myPC\C\DATA\Data.MDF" としてコピー
4. SQL Server 2005 Express でアタッチ… に失敗

となりました。
引き続きよろしくお願いします。
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2008-04-25 20:48
「解決」の報告をしたんですけれども、
別のDBでやってみたらうまくいかない・・・

取り消しです><
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2008-04-25 22:18
今度こそ・・・

データベースをアタッチする方法 (SQL Server Management Studio)
http://msdn2.microsoft.com/ja-jp/library/ms190209.aspx
引用:

たとえば、次のように指定します。

C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL\DATA\AdventureWorks_Data.mdf


とありますが、

"C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL\DATA\"

ここまでが[固定]でした・・・
要するに、

1. サーバーのDBをデタッチ
2. サーバーのデータベース格納ディレクトリ "(install folder)\MSSQL\DATA\" までもぐって、 MDF, LOG ファイルをコピー
3. 自PCのデータベース格納ディレクトリ "(install folder)\MSSQL.1MSSQL\DATA\" に、さっきのファイルをペースト
4. Management Studio で上記をアタッチ

解ってしまえばえらい簡単・・・
でも丸1日かかったバカチンは私です・・・

みなさまありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)