1. ホーム
  2. データベース
  3. mssql2005

SQL Server 2005 と sql 2000 の間のデータ変換方法

2022-01-21 06:27:28

SQL SERVER 2000の2005は、パフォーマンスとセキュリティが強化され、多くの企業で2005が採用され、また2000と2005を同時に使用しているユーザーもいるようです。

今日は、その実装について見ていきましょう。

私の実装環境の紹介です。

方法1:分離して追加する この方法は、SQL Server 2000からSQL Server 2005にデータを変換するのに適していますが、その逆はできません。

例えば、今SQL SERVER 2000からSQL SERVER 2005にDUFEIデータベースを分割して追加する方法でインポートしてみましょう。

ステップ1:2000のマシンで、実行します。

USE master;GO
EXEC sp_detach_db @dbname = N'dufei';GO

ステップ2:切り離されたMDFとLDFファイルを2005マシンにコピーします。

ステップ3:2005マシンで次のコマンドを実行するだけです:コピーしたファイルをデータベースに添付します。

USE master;Go
EXEC sp_attach_db @dbname = N'dufei', 
@filename1 = N'c:\dufei_data.mdf', 
@filename2 = N'c:\dufei_log.ldf'; GO

この時点で、インポートが成功したことになります。

方法2:バックアップと復元を使用する。

例 2000年のDB1データベースをバックアップし、リストア方式で2005年にインポートしたところです。

ステップ1:SQL 2000で、実行します。

バックアップデータベースDB1をdisk='c:╱DB1.BAK' にバックアップします。

ステップ2:バックアップファイルをSQL 2005マシンにコピーします。で、できたDB1.BAKをもう一台のマシンにコピーします。

ステップ3:SQL 2005マシンで、実行します。

リストア データベース db1 from disk='c:\db1.bak'

パスの関係でデフォルトでは動作しません。つまり、RESTOREのデフォルトの構文を使用すると、動作しないことになります。

そこで、パスを変更する必要があります。


RESTORE DATABASE db1 FROM DISK = 'C:\db1.bak' WITH FILE = 1, MOVE N'db1_Data' TO N'c:\Program FilesMicrosoft SQL ServerMSSQL.1MSSQLdb1.MDF', MOVE N'db1_Log' TO N'c:⽋⽥Program FilesMicrosoft SQL ServerMSSQL.1MSSQLdb1_1.LDF'

すると、リストアが成功しました

ただし、この方法で2005から2000にデータをインポートしている場合は、エラーが報告されます。

バックアップまたはリストア操作に指定できるデバイスの数が多すぎます。指定できるデバイスは64個だけです。

サーバーです。メッセージ 3013、レベル 16、ステータス 1、行 1

RESTORE DATABASE 操作が異常終了しました。

そのため、以下の2つの方法を使用しない限り、どちらの方法でもSQL SERVER 2005からSQL SERVER 2000へのデータインポートはできません。

方法3:インポート・エクスポート。

例 データベースDUFEIを2005からSQL 2000にエクスポートする場合

ステップ1.

成功!

SQL 2000 から SQL 2005 へのインポートでは、この逆も可能です。例えば、PUBS を 2005 にインポートする場合

方法4:スクリプトを使用する。個人的にはこの方法はお勧めしません。なぜなら、このプロセスではまだデータのインポート/エクスポートを使ってデータを変換する必要があるからです。つまり、お互いのデータベースにレコードをインポートする際にもスクリプトを使うことはできず、まだ他の方法を使わなければならないのです!このような場合、スクリプトを使うことができます。データベース内にトリガーやストアドプロシージャなど、より多くのオブジェクトがある場合は、スクリプトとデータのインポート/エクスポートを組み合わせて使用することを検討できます。

これはあくまで個人的な感覚なので、正しいかどうかは分かりませんが、ご批判いただければと思います

この記事は、杜逢のブログから転載しました。