SQL Transaction从开发人员角度记录最佳实践

时间:2017-08-17 12:44:38

标签: sql-server

我正在开发一个应该部署到客户的内部部署SQL Server上的系统。然后,系统应该无人值守地运行多年,并且具有高数据库吞吐量(许多插入/删除),这将传达给客户。有些人似乎使用常规备份或日志截断“正确”配置了数据库,其他人只是让事务日志增长直到磁盘已满。

当磁盘已满时,显然不仅我的应用程序,而且在同一磁盘上使用DB的其他不相关系统也停止工作。

现在,有人可能会说这是客户的错,但如果您希望他们使用您的系统,您无法告诉他们。

那么,作为开发人员,我可以做些什么来解决这个问题呢?系统是否应监控日志增长,并在日志失控时发送电子邮件?我应该/可以监控SQL服务器磁盘空间吗?

当然,在有关日志文件增长的12页设置文档中,我有一个粗略的注意段落,但这些天似乎没有人完全阅读它们。

1 个答案:

答案 0 :(得分:1)

  

系统应该无人值守地运行多年,并具有较高的数据库吞吐量(许多插入/删除),并传达给客户。

您的数据库需要维护,至少应检查磁盘空间,如果您无法承担任何维护,那么SQLAZURE可能是您的最佳选择,但这仍然需要DBA

  

那么,作为开发人员,我可以做些什么来解决这个问题呢?

你应该把它们弄清楚,不是你支持的,这必须由他们处理并要求他们雇用DBA

日志增长,对于OLTP系统来说是不可避免的。如果您正在寻找最佳实践,那么很少

1.日志文件应放在单独的驱动器中 2.设置MB中的自动增长不是百分比

并查看此链接以获取有关这种情况发生原因的更多信息:How best to maintain SQL log file sizes

  

系统是否应监控日志增长,并在日志失控时发送电子邮件?我应该/可以监控SQL服务器磁盘空间吗?

您应该监控日志增长。当可用空间百分比小于10时,您可以使用以下内容监控并发送电子邮件以发出警报

create table #t
(
dbname sysname,
logsize float,
logspaceused float,
status bit
)
insert into #t
exec ('
dbcc sqlperf(''logspace'')')

您还可以查看mssql提示以获取高级监控信息: Monitor SQL Server Transaction Log File Free Space