MS SQL Server 2005/2008でテーブルレベルのバックアップ(ダンプ)を取得する方法は?
もちろん、問題のテーブルが独自のFILEGROUP
に割り当てられていない限り、BACKUP DATABASE
コマンドを使用して単一のテーブルをバックアップすることはできません。
提案したとおり、できることは、テーブルデータをCSVファイルにエクスポートすることです。テーブルの定義を取得するために、CREATE TABLE
スクリプトを 'スクリプトアウト'できます。
これは、SQL Server Management Studio内で次の方法で実行できます。
データベースを右クリック>タスク>スクリプトを生成
スクリプトを作成するテーブルを選択し、制約やインデックスなどの関連オブジェクトを含めることもできます。
DATA
だけでなくschema
を取得するには、[スクリプトオプションの設定]タブでAdvanced
を選択し、GENERAL
セクションでTypes of data to script
を設定する必要があります。 Schema and Data
を選択します
これがお役に立てば幸いですが、さらなる支援が必要な場合はお気軽に直接ご連絡ください。
一括コピーユーティリティ を使用して、テーブルレベルのバックアップを実現しています
輸出する:
bcp.exe "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E
インポートする:
bcp.exe [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
ご覧のとおり、任意のクエリに基づいてエクスポートできるため、これを使用して増分バックアップを行うこともできます。さらに、ここで説明したSSMSを使用する他の方法とは対照的に、スクリプト化が可能です。
必要な手順は次のとおりです。ステップ5は、データが必要な場合に重要です。ステップ2では、個々のテーブルを選択できます。
EDITスタックのバージョンはあまり読めません...ここにフルサイズのイメージがあります http://i.imgur.com /y6ZCL.jpg
以下のクエリを実行して、既存のテーブルのバックアップを作成すると、データとともに古いテーブルの既存の構造を持つ新しいテーブルが作成されます。
select * into newtablename from oldtablename
テーブル構造のみをコピーするには、次のクエリを使用します。
select * into newtablename from oldtablename where 1 = 2
これは qntmfredのソリューション に似ていますが、直接テーブルダンプを使用します。このオプションは少し高速です( BCP docs を参照):
エクスポートする:
bcp "[MyDatabase].dbo.Customer " out "Customer.bcp" -N -S localhost -T -E
インポートする:
bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
MySQLのDUMP
のようなものを探している場合は、朗報です。SQLServer 2008 Management Studioがその機能を追加しました。
SSMSで、問題のDBを右クリックして、Tasks> Generate Scriptsを選択します。次に、オプションウィザードの2ページ目で、 dataもスクリプト化することを選択してください 、 DUMP
ファイルに相当するものが生成されます。
新しいファイルグループを作成し、このテーブルを配置して、このファイルグループのみをバックアップします。
ここで説明した問題と一致するかどうかはわかりません。テーブルの増分バックアップを作成する必要がありました! (新しい挿入データのみをコピーする必要があります)。以前はDTSパッケージを設計していました。
(「ステータス」列に基づいて)新しいレコードを取得し、データを宛先に転送しました。 (「データ変換タスク」を通じて)
次に、「ステータス」列を更新しました。 (「SQLタスクの実行」を通じて)
「ワークフロー」を適切に修正する必要がありました。
Microsoftの無料の Database Publishing Wizard を使用して、SQLスクリプト(CREATE TABLEおよびINSERT INTO)でテキストファイルを生成できます。
単一のテーブルに対してこのようなファイルを作成でき、SQLスクリプトを実行するだけで、データを含むテーブル全体を「復元」できます。
SQL Serverのインポートおよびエクスポートウィザードを使用します。
すべての復旧モデルでは、SQL Serverデータベース全体または一部、またはデータベースの個々のファイルまたはファイルグループをバックアップできます。 テーブルレベルのバックアップは作成できません。
From: バックアップの概要(SQL Server)
SqlTableZipという名前の無料アプリが仕事を終わらせます。基本的に、anyクエリ(もちろん、[select * from table]にすることもできます)を記述すると、アプリはすべてのデータを含む圧縮ファイルを作成します、後で復元できます。
誰かが誤って行を削除した後にテーブルを復元できるようにしたい場合、データベースのスナップショットを見ることができます。スナップショットから非常に簡単にテーブル(または行のサブセット)を復元できます。 http://msdn.Microsoft.com/en-us/library/ms175158.aspx を参照してください
BMC Recovery Manager(以前のSQLBacktrack)を使用すると、データベース(テーブル)内の個々のオブジェクトのポイントインタイムリカバリが可能になります。安くはありませんが素晴らしい仕事をします: http://www.bmc.com/products/proddocview/0,2832,19052_19429_70025639_147752,00.html
http://www.bmc.com/products/proddocview/0,2832,19052_19429_67883151_147636,00.html
Handy Backupは、MSSQL 2005/2008を含むMS SQL Serverから自動的にダンプファイルを作成します。これらのダンプは、特定のデータベースコンテンツの正確なコピーを含むテーブルレベルのバイナリファイルです。
Handy Backupで簡単なダンプを作成するには、次の指示に従ってください:
次に、名前の前のアイコンをクリックして新しいタスクを実行するか、スケジュールされた時間を待ちます。 Handy Backupは、データベースのダンプを自動的に作成します。次に、バックアップ先を開きます。 MS SQLバックアップを含むフォルダー(またはいくつかのフォルダー)があります。このようなフォルダには、いくつかのバイナリテーブルと設定が単一のZipに圧縮されたテーブルレベルのダンプファイルが含まれます。
Handy Backupは、MySQL、MariaDB、PostgreSQL、Oracle、IBM DB2、Lotus Notes、およびODBCドライバーを持つ汎用SQLデータベースのダンプを保存できます。これらのデータベースの中には、DBMSとHandy Backup間の接続を確立するために追加の手順が必要なものがあります。
上記のツールは、多くの場合、SQLデータベースをテーブルレベルのSQLコマンドシーケンスとしてダンプし、これらのファイルを必要な手動変更に備えています。
SQL Serverはテーブルバックアップをサポートしていないため、おそらく2つのオプションがあります。どちらも、テーブル作成のスクリプト作成から始まります。次に、多数の挿入ステートメントを生成するスクリプトテーブル-INSERTオプションを使用するか、統合サービス(2000でのDTS)などを使用して、CSVなどとしてデータをエクスポートできます。