web-dev-qa-db-ja.com

特定のテーブルのないMSSQLデータベースバックアップ

SQLに特定のテーブルを指定せずにスケジュールバックアップを作成する必要があります。そのテーブルでバックアップを取ると時間がかかるからです。バックアップから1つのテーブルを除外する必要があります。出来ますか?そのテーブルがなければ、すべてのテーブルとデータがデータベースに存在するはずです。

15

PRIMARYファイルグループとは別に、この1つのテーブルに個別のファイルグループを設定できます。これにより、大きなテーブルを省略したバックアップを作成できるようになります。以下は、プロセスをステップアウトする例です。

1)データベースの新しいファイルグループを作成します。

USE [master]
GO
ALTER DATABASE [EXAMPLEDB] ADD FILEGROUP [EXAMPLEFG1]
GO

2)新しいファイルグループにわずかに異なる名前で同じテーブルを作成します。

CREATE TABLE [dbo].[example]
(
    [e] [int] NOT NULL
)
ON [EXAMPLEFG1]

GO

3)元のテーブルから新しいテーブルにレコードを挿入します。

4)古いテーブルを削除し、新しいテーブルの名前を古いテーブルの名前と一致するように修正します。

5)現在ファイルグループ「EXAMPLEFG1」にあるテーブルを除外するバックアップPRIMARY。

BACKUP DATABASE EXAMPLE
   FILEGROUP = 'PRIMARY',
   TO DISK = '<Your Directory>'
GO

ExampleFG1のバックアップを行う場合は、上記のクエリでFILEGROUP値を「EXAMPLEFG1」に変更するだけです。

ファイルグループのバックアップの詳細については、これをチェックしてください Microsoftサイト

お役に立てれば!

15
Mike Zalansky

マイクの answer はほぼ正しいですが、データを移動するために別のテーブルを作成する必要がない必要はありません。

私が自分でテストした この回答 によると、ファイルグループを作成した後、クラスター化インデックスを他のファイルグループに移動する必要があります。クラスター化インデックスがない場合は、このプロセスで役立つようにインデックスを作成できます。非クラスター化インデックスもある場合は、それらも移動します。終了すると、すべてのデータがファイルグループ間で自動的に移動されます。

したがって、この大きなテーブルをバックアップルーチンから除外する場合は、次の手順を実行します。

  1. 新しいファイルグループを作成します。

    USE [master]  
    ALTER DATABASE [MyDatabase] ADD FILEGROUP [FG_MYBIGTABLE]
    
  2. このファイルグループに新しいファイルを追加します。

    ALTER DATABASE [MyDatabase]
    ADD FILE
    (
        name = MyDatabase_MyBigTable,
        filename = 'C:\DB_Files\MyDatabase_MyBigTable.ndf',
        size = 1024MB,
        maxsize = unlimited,
        filegrowth = 100MB
    ) 
    TO FILEGROUP FG_MYBIGTABLE
    
  3. 古いインデックスをDROP_EXISTINGで作成して、クラスター化インデックスを移動します。

    CREATE UNIQUE CLUSTERED INDEX CIX_MyBigTable
    ON MyDatabase.dbo.MyBigTable (ID)
    WITH DROP_EXISTING, ONLINE
    ON FG_MYBIGTABLE
    
  4. 他のインデックスを移動します。

    CREATE NONCLUSTERED INDEX [IX_OtherTable] 
    ON MyDatabase.dbo.MyBigTable (OtherTable_ID)
    WITH DROP_EXISTING, ONLINE
    ON FG_MYBIGTABLE
    
  5. PRIMARYファイルグループを参照してデータベースをバックアップします。

    BACKUP DATABASE MyDatabase
    FILEGROUP = 'PRIMARY',
    TO DISK = 'C:\Backups\MyBackup.bak'
    
7
Zanon

テーブルをバックアップから除外することはできません。これは、バックアップの一部ではなく、全体を定義するものです。ただし、これを回避する方法はいくつかあります。 couldこれを行う1つの方法は、2番目のデータベースを作成し、そのテーブルを除くすべてのデータをデータベースからこれにコピーすることです。データベースを作成し、コピーをバックアップします。レプリケーションを使用してデータをコピーし、テーブルを除外して、レプリケートされたデータベースをバックアップできます。問題は、データベースの残りの部分にあるデータの量が原因で、これらのいずれかが実際には長くかかる可能性があることです。

0
Sean Lange