小编Hoo*_*ody的帖子

具有 4,000,000 行的 SQL Server 表为 40GB

我一直试图弄清楚为什么我们的生产数据库最近增长如此之快,并发现原因是审计表。我们将存档表以解决问题,但我只是想检查表的大小对于像这样的大型 SQL 服务器表是否正常。它有 4,000,000 行,结构如下...

Name                    Type        Nullable
AuditLogId              bigint      no
UserName                nvarchar    no
TimeOfChange            datetime    no
ObjectName              nvarchar    no
ChangeName              nvarchar    no
RecordId                int         yes
OriginalValues          nvarchar    yes
ResultingValues         nvarchar    no
Run Code Online (Sandbox Code Playgroud)

使用 AuditLogId 上的主键

ALTER TABLE [dbo].[AuditLog] ADD  CONSTRAINT [PK_AuditLog] PRIMARY KEY CLUSTERED 
(
    [AuditLogId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

在 RecordId 上更新的记录还有一个外键。nvarchar 字段似乎有多达 12,000 …

performance sql-server database-size

4
推荐指数
1
解决办法
2435
查看次数

在 Kill Command 收到间歇性错误时要检查什么

我有一个 C# 计划任务,它每晚运行,并包含一个 kill 命令来删除现有数据库,以便可以重新创建它。它大约每周随机生成一次此错误。

杀死数据库失败。用户无权更改数据库“Foo”、数据库不存在或数据库未处于允许访问检查的状态。杀死数据库失败。

使用的C#如下。

srv.KillAllProcesses;
srv.KillDatabase;
Run Code Online (Sandbox Code Playgroud)

所以我已经在尝试终止所有进程。在执行 kill 命令之前是否还有其他检查或命令可以确保它成功执行?这不可能是用户权限问题,因为该操作大部分时间都在工作,那么什么可能导致“未处于允许访问检查的状态”?

sql-server t-sql sql-server-2014

3
推荐指数
1
解决办法
117
查看次数