gpt4 book ai didi

sql-server - SQL Server如何实现数据自动归档?

转载 作者:行者123 更新时间:2023-12-03 09:35:24 28 4
gpt4 key购买 nike

我有一张表,每天我都想对其进行自动归档。因此,为了清楚起见,我每天都想获取当天生成的信息,并将其移动到另一个分区(同一个表)中,而不是另一个存档表中。那是因为我希望可以使用与新数据相同的查询来访问旧数据。

我正在使用 SQL Server 2005,我已阅读 http://msdn.microsoft.com/en-us/library/ms345146(SQL.90).aspx文章,但找不到如何编写分区函数来满足我的需求。

所以我希望存在的解决方案应该是一次性配置,不需要任何进一步的干扰。你有什么建议吗?

最佳答案

您可以使用分区表轻松地做到这一点;下面的示例脚本——它创建一个临时数据库 TestDB;如果您不想使用它,请将数据库更改为其他内容。它最后会自行清理如果你按原样运行脚本创建数据库;添加基于位的分区功能。创建表 TestTable;应用分区函数将 3 个“实时”行插入表中通过从 sys.partitions 选择详细信息显示 3 行都在一个分区表中然后更新其中一条记录以使其存档从 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

关于sql-server - SQL Server如何实现数据自动归档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3456483/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com