SQLServer

SQLServer テーブル単位のバックアップと復元

投稿日:

方法1.bcpユーティリティーを使用する方法

bcpユーティリティーを利用してエクスポート、インポートをする方法です。

(1)bcpユーティリティーでエクスポート

c:\>bcp TestDB.dbo.users out c:\users.txt -c -S localhost -U sa -P password

(2)インポートするテーブルを作成します

※場合によっては、復元したいテーブルを空にします

(3)データをインポートします

c:\>bcp TestDB.dbo.users in c:\users.txt -c -S localhost -U sa -P password

次に紹介するSQLの方法と比べ、そのままインポートできることがbcpユーティリティーの魅力です。

方法2.SELECT INSERTを使用する方法

(1)インポートするテーブルを作成します

(2)SELECT INSERT でデータをコピーします

insert into users_bk  select * from users_original

※この方法には大きな問題点があります。
列リストが使用されていて、IDENTITY_INSERT が ON のときに限り、テーブル ‘users_bk’ の ID 列に明示的な値を指定できます。
列のプロパティにおいて、IDENTITYの指定の(IDである)を「はい」にしていると、インポートすることができない。

「変更の保存が許可されていません。」とういエラーが出て、テーブルの構成を変更できないのだ。

sqlserver001

ツール > オプション > デザイナー にある
「テーブルの再作成を必用とする変更を保存できないようにする」
のチェックを外せば構成を変更することができる。

sqlserver002

『テーブルの再作成時にメタデータが失われ、データが直接失われる場合があります。・・・』ということがこの設定の存在理由です。
あまり意識しなくてもよさそうですが、テーブルの構成を変更しなくてはインポートできないのは大きな問題です。
方法1のbcpユーティリティーを使用する方法がおすすめです。

Gooleアドセンス用336

Gooleアドセンス用336

-SQLServer
-

執筆者:

関連記事

sqlserver

SQLSERVER saでログインできるようにする

私はsaも設定しておくべきだと思います。 そこでsaログインするための確認ポイントです。 INDEX1 ログインを有効にする2 サーバー認証の設定3 名前付きパイプ ログインを有効にする Manage …

sqlserver

テーブル変更やインデックス追加時にSELECTできるのか

INDEX1 テーブルの変更は運用に影響するのか?2 テーブルの変更3 インデックスの追加 テーブルの変更は運用に影響するのか? 運用中のテーブルを変更しないといけない場合は多々あります。 運用中のテ …

sqlserver

SQL Server Management Studio の「上位200行の編集」を変更したい

恐らく私が十分に使用できていないだけで、機能はたくさんありそうなSQL Server Management Studio。最近新しいものに入れ替えたら(OS毎再インストールするハメになったのですが)、 …

sqlserver

SQLSERVER サービス起動用ユーザーを作成する

SQLサーバーのサービスを起動しているのは、デフォルトではおそらくAdministratorです。 ここに大きな落とし穴があります。 Administratroのパスワードを変更することはセキュリティ …

sqlserver

「.NET」と「ASP.NET」からのSQL Serverへのコネクションを確認する(2)

「.NET」と「ASP.NET」からの接続には大きな違いがあります。 それは普通の?(exe形式の)アプリケーションか、Webアプリケーションかです。 この違いはアプリの終了というタイミングに大きく影 …