쉽게 파티셔닝 된 테이블을 사용하여이 작업을 수행 할 수 있습니다. 아래 예제 스크립트 - 임시 db TestDB를 생성합니다. 당신이 그것을 사용하고 싶지 않다면 데이터베이스를 다른 것으로 바꾸십시오. 그것은 결국 자체를 청소합니다 스크립트를 그대로 실행하는 경우 데이터베이스를 만듭니다. 은 비트를 기반으로 분할 기능을 추가합니다. 테이블 TestTable을 만듭니다. 파티션 기능과 함께 적용 Inerts 테이블에 3 개의 "라이브"행 sys.partitions에서 세부 정보를 선택하여 3 개의 행이 모두 하나의 테이블에 있음을 표시합니다. THEN이 레코드를 업데이트하여 아카이브하도록합니다. 정보를 다시 선택합니다. sys.partitions은 레코드가 두 번째 스키마로 이동되었음을 나타냅니다.
레코드를 보관 처리하는 과정을 설정하기 만하면됩니다.
USE master;
GO
--- Step 1 : Create New Test Database with two different filegroups.
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'TestDB')
DROP DATABASE TestDB;
GO
CREATE DATABASE TestDB
ON PRIMARY
(NAME='TestDB_Part1',
FILENAME=
'c:\sqldata\TestDB_Part1.mdf',
SIZE=3,
MAXSIZE=100,
FILEGROWTH=1),
FILEGROUP TestDB_Part2
(NAME = 'TestDB_Part2',
FILENAME =
'c:\sqldata\TestDB_Part2.ndf',
SIZE =3,
MAXSIZE=100,
FILEGROWTH=1);
GO
USE TestDB;
GO
--- Step 2 : Create Partition Range Function
CREATE PARTITION FUNCTION TestDB_PartitionRange (Bit)
AS RANGE right FOR
VALUES (1);
GO
CREATE PARTITION SCHEME TestDB_PartitionScheme
AS PARTITION TestDB_PartitionRange
TO ([PRIMARY], TestDB_Part2);
GO
CREATE TABLE TestTable
(Archived Bit NOT NULL,
Date DATETIME)
ON TestDB_PartitionScheme (Archived);
GO
INSERT INTO TestTable (Archived, Date)
VALUES (0,'2010-01-01');
INSERT INTO TestTable (Archived, Date)
VALUES (0,'2010-02-01');
INSERT INTO TestTable (Archived, Date)
VALUES (0,'2010-03-01');
GO
SELECT * FROM TestTable;
SELECT * FROM sys.partitions
WHERE OBJECT_NAME(OBJECT_ID)='TestTable';
update TestTable
set Archived = 1 where Date = '2010-03-01'
SELECT * FROM sys.partitions
WHERE OBJECT_NAME(OBJECT_ID)='TestTable';
use master
go
drop database testdb
당신은 아마 serverfault.com에서 더 많은 답변을 얻을 것이다 - 시스템 관리자 및 데이터베이스 관리자가 놀고 곳 .... –
또는 dba.stackexchange.com – idstam