データベースの.bak
ファイルにある特定のテーブルのバックアップを取りたいのですが、これらはすべてT-SQLスクリプトを使用して実行する必要があります。
バックアップの種類は、SQL Server復旧モデルに依存しています。すべての復旧モデルでは、SQL Serverデータベースの全体または一部、またはデータベースの個々のファイルまたはファイルグループをバックアップできます。テーブルレベルのバックアップは作成できません。そのようなオプションはありません。しかし、これには回避策があります
SQL Serverで可能なSQL Serverテーブルのバックアップを取る。 SQL SQL Serverでテーブルをバックアップするには、さまざまな代替方法があります
ここでは、あなたが知っているかもしれない最初の休息だけを説明しています
方法1 – BCPを使用してSQLテーブルをバックアップ(一括コピープログラム)
SQL Server AdventureWorksにある "Person.Contact"という名前のSQLテーブルをバックアップするには、次のスクリプトを実行する必要があります。
-- SQL Table Backup
-- Developed by DBATAG, www.DBATAG.com
DECLARE @table VARCHAR(128),
@file VARCHAR(255),
@cmd VARCHAR(512)
SET @table = 'AdventureWorks.Person.Contact' -- Table Name which you want to backup
SET @file = 'C:\MSSQL\Backup\' + @table + '_' + CONVERT(CHAR(8), GETDATE(), 112) -- Replace C:\MSSQL\Backup\ to destination dir where you want to place table data backup
+ '.dat'
SET @cmd = 'bcp ' + @table + ' out ' + @file + ' -n -T '
EXEC master..xp_cmdshell @cmd
[〜#〜]出力[〜#〜]
注意 -
または、コマンドプロンプトでBCPを実行し、コマンドプロンプトで次のコマンドを入力できます。どちらの操作でも同じアクティビティが実行されますが、コマンドプロンプトを開いてタイプを保存するため、上記の方法が好きです。タイプ。
bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T
方法1:
テーブル内のデータと、同じデータベースおよびサーバー内でローカルに使用されるデータのみに関心がある場合は、以下のクエリを使用して、選択したテーブルのバックアップを作成できます。
SELECT * INTO newtable1
FROM originalTable1
---表2の場合
SELECT * INTO newtable2
FROM originalTable2
など... n個のテーブルに対して
このステートメントは、newtable1、newtable1、..と呼ばれるテーブルを作成するため、事前に作成する必要はありません。
注*この方法では、バックアップが非常に高速になりますが、主な欠点は、テーブルのキー、インデックス、および制約が引き継がれず、バックアップがファイルの外部ではなくデータベース内に保存されることです。
方法2:
災害復旧ソリューションまたはデータ損失防止のためにテーブルを他のサーバーにバックアップする場合は、タスクの[スクリプトの生成]オプションを使用してテーブルをスクリプト化できます。
まず、バックアップするテーブルを含むデータベースを右クリックし、[タスク]-> [スクリプトの生成]を選択します。
テーブルをバックアップする必要があるリストからデータベースを選択します
次に表示される画面はスクリプトオプションです。
テーブル/表示オプションが表示されるまで、スクリプトオプションを下にスクロールします。制約、スクリプトデータ、外部キー、主キー、トリガー、一意のキーを確認します。 (またはもちろん、必要なものは何でも選択できます)。 [次へ]を選択すると、[オブジェクトタイプの選択]画面が表示されます
テーブルを選択し、次にヒットします。最後に、バックアップするテーブルを選択して、次にヒットします
方法3:
テーブルのバックアップにも bcpユーティリティ を使用できます。
SSMSの一括エクスポート機能を使用する ここ は、言及されている最良かつ最も簡単な方法です
SQL Serverインポートおよびエクスポートウィザード:SQL Serverインポートおよびエクスポートウィザードは、SQL Server Integration Services(SSIS)パッケージにグラフィカルユーザーインターフェイスを提供します。作成されたパッケージは、スケジュールに従って実行するために自動化できます。 SQL Serverデータツール(SSDT)を使用して、さらに構成および変更できます。
まず、インポートとエクスポートウィザードを開き、データベースを右クリックして、[タスク]サブメニュー-> [データのエクスポート]コマンドを選択します。
特定のテーブルを.bak
ファイルにバックアップすることはできません。テーブルをcsvにエクスポートするか、それらをスクリプト化するか、bcp
を使用してファイルに格納することができます。
特定のテーブルをバックアップしたい場合(そして常に同じである場合)に実行できることは、それらを別のfile group
に移動し、そのファイルグループをバックアップすることです。
ドキュメントについては ファイルとファイルグループのバックアップ を参照してください。
たとえば、T-SQLを使用して特定のファイルまたはファイルグループをバックアップする場合は、(リンクから)使用できます。
--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
FILEGROUP = 'SalesGroup1',
FILEGROUP = 'SalesGroup2'
TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck';
GO
そして
--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
FILE = 'SGrp1Fi2',
FILE = 'SGrp2Fi2'
TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck';
GO
KASQLDBAの応答から方法1を基にして:
テーブルのバックアップコピーを保持する別のデータベースを作成します。 KASQLDBAが提供するクエリを変更して、元のテーブルから選択して代替データベースにコピーするようにします。
SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1
--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2
新しいデータベースにテーブルを削除するスクリプトを作成し、必要なすべてのテーブルに対してselect intoコマンドを実行できます。インデックスやその他のオブジェクトを使用可能にしたい場合は、それらを新しいデータベースに構築し、テーブルを切り捨ててから、データを再設定します。切り捨てが必要な場合は、select intoの代わりにinsertステートメントを使用する必要があります。
このオプションは、.BAKファイルを作成する方法を提供します。新しいデータベースのテーブルにデータを入力した後で、データベースのバックアップコマンドを実行するだけです。