T-SQLスクリプトを使用してSQL Server 2008の特定のテーブルのバックアップを取得する方法


回答:


11

バックアップの種類は、SQL Server復旧モデルに依存しています。すべての復旧モデルを使用すると、SQL Serverデータベース全体または一部、またはデータベースの個々のファイルまたはファイルグループをバックアップできます。テーブルレベルのバックアップは作成できません。そのようなオプションはありません。しかし、これには回避策があります

SQL ServerでSQL Serverテーブルのバックアップが可能です。SQL SQL Serverでテーブルをバックアップするさまざまな代替方法があります

  1. BCP(一括コピープログラム)
  2. データを含むテーブルスクリプトを生成する
  3. SELECT INTOを使用してテーブルのコピーを作成します
  4. フラットファイルにテーブルデータを直接保存する
  5. SSISを使用して任意の宛先にデータをエクスポートする

ここでは、あなたが知っているかもしれない最初の休憩だけを説明しています

方法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

出力

ここに画像の説明を入力してください

注意 -

  1. 一括インポート/エクスポートの権限が必要です
  2. 上記のスクリプトでは、-nはネイティブSQLデータ型を示し、これは復元中に重要です。
  3. -Tは、Windows認証を使用してSQL Serverに接続していることを示します。SQLServer認証を使用して接続する場合は、-U -Pを使用します。
  4. これにより、データ転送の速度もわかります。私の場合、これは毎秒212468.08行でした。
  5. このコマンドが完了すると、「AdventureWorks.Person.Contact_20120222」という名前のファイルが作成され、指定された宛先フォルダーになります。

または、コマンドプロンプトからBCPを実行し、コマンドプロンプトで次のコマンドを入力することもできます。どちらの操作も同じアクティビティを実行しますが、コマンドプロンプトとタイプを開くときの保存タイプとして上記の方法が好きです。

bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T

ここに画像の説明を入力してください


9

方法1:

テーブル内のデータと、同じデータベースおよびサーバー内でローカルに使用されるデータのみに関心がある場合は、以下のクエリを使用して、選択したテーブルのバックアップを取ることができます。

SELECT * INTO newtable1
FROM originalTable1

---表2の場合

SELECT * INTO newtable2
FROM originalTable2

など... n個のテーブル

このステートメントは、newtable1、newtable1 ..というテーブルを作成します。したがって、事前にテーブルを作成する必要はありません。

注*この方法はバックアップを非常に高速に実行しますが、主な欠点は、テーブルのキー、インデックス、および制約を引き継がないことと、バックアップがファイルの外部ではなくデータベース内に格納されることです。

方法2:

災害復旧ソリューションまたはデータ損失防止のためにテーブルを他のサーバーにバックアップする場合は、タスクの「スクリプトを生成」オプションを使用してテーブルをスクリプト化できます。

  1. まず、バックアップするテーブルを含むデータベースを右クリックして、[タスク]-> [スクリプトの生成]を選択します。

  2. テーブルをバックアップする必要があるリストからデータベースを選択します

  3. 表示される次の画面は、スクリプトオプションです。

  4. [テーブル/表示オプション]が表示されるまで、スクリプトオプションを下にスクロールします。制約、スクリプトデータ、外部キー、主キー、トリガー、一意キーを確認してください。(または、もちろん必要なものを選択できます)。[次へ]を選択すると、[オブジェクトタイプの選択]画面が表示されます。

  5. テーブルを選択して、次にヒットします。最後に、バックアップするテーブルを選択して、次にヒットします

方法3:

テーブルのバックアップにもbcpユーティリティを使用できます。


1

特定のテーブルを.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

1
残念ながら、すべての読み取り/書き込みファイルグループを一緒にバックアップする必要があるため、1つだけを選択することはできません。
カミルゴシミンスキー

1

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ファイルを作成する方法を提供します。新しいデータベースにテーブルを追加した後、単にデータベースのバックアップコマンドを実行します。


1

SSMSの一括エクスポート機能を使用するには、こちら記載されている最良かつ最も簡単な方法を示します。

SQL Serverのインポートおよびエクスポートウィザード: SQL Serverインポートおよびエクスポートウィザードは、SQL Server Integration Services(SSIS)パッケージへのグラフィカルユーザーインターフェイスを提供します。作成したパッケージは、スケジュールに従って実行するために自動化できます。SQL Serverデータツール(SSDT)を使用して、さらに構成および変更できます。

開始するには、インポートおよびエクスポートウィザードを開き、データベースを右クリックして、[タスク]サブメニュー-> [データのエクスポート]コマンドを選択します。

ここに画像の説明を入力してください


このリンクは質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供する方が良いでしょう。リンクされたページが変更されると、リンクのみの回答が無効になる可能性があります。- レビューから
ケビンスキー

@kevinsky確かに!しかし、少なくともあなたはそれに賛成票を投じるべきでした!
マウラヴィダウード

-1

別の方法は、script / sprocを使用することです:DumpDataFromTable.sql from:https : //github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts

 EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'

渡す必要があります:スキーマ名とテーブル名、作成されたスクリプトが保存される出力パス(フォルダーは既に作成/存在している必要があり、sqlにはsprocのコメントを参照してください)。

必要に応じて、テーブルに条件を追加できます(現時点では、フィルターはANDで開始する必要があります)


この手順では、行方不明の手順PRC_WritereadFileに依存
SubqueryCrunch

-2

SQL Server 2008のデータベースから単一のテーブルとそのデータをバックアップします。

SELECT * INTO  [dbo].[tbl_NewTable] 
FROM [dbo].[tbl_OldTable]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.