SQL Server 2012 Express:如何限制数据库的大小和保留策略?

use*_*270 1 sql-server sql-server-2012

我不经常使用数据库,我想确保我以正确的方式处理这个问题。

我想将数据库的文件大小配置为不超过 9 个演出。当数据库达到此文件大小限制时,我希望它清除 25%% 的最旧记录以容纳新记录。

这是我可以/应该在数据库服务器本身上配置的东西,比如一次性最大设置配置,还是必须由更新数据库的程序来处理(它会检查容量并告诉它何时清除记录)。

我不是 DBA,所以我不确定这通常是如何处理的。

squ*_*man 5

您可以将数据库的最大文件大小设置为 9GB,但您需要自己进行清除。这不是 SQL Server 支持的。您可以使用扩展事件获得达到限制的通知,但 SQL Server 无法在您不告知的情况下知道要删除哪些记录。SQL Server 不会记录或以其他方式跟踪表中某行的年龄。您必须将其构建到表架构​​中并维护自己的老化逻辑。

在 SQL Server Management Studio 中设置文件大小:

  • 右键单击数据库并获取属性
  • 单击左侧菜单中的文件链接
  • 单击 Autogrowth / maxsize 下的 ... 按钮并相应地设置属性

T-SQL 设置文件大小:

ALTER DATABASE MyDb
MODIFY FILE
(
    NAME=N'MyDataFile',
    MAXSIZE=9000MB
)
Run Code Online (Sandbox Code Playgroud)

注意:MyDataFile是数据文件的逻辑名,而不是文件系统上的物理文件名。您可以使用sys.database_files系统视图找到数据库文件的逻辑文件名:

USE MyDb
SELECT name
FROM sys.database_files
WHERE type_desc = 'ROWS'
Run Code Online (Sandbox Code Playgroud)

name列中的值是文件的逻辑名称。