Sql server 从开发人员的角度来看SQL事务日志最佳实践

Sql server 从开发人员的角度来看SQL事务日志最佳实践,sql-server,Sql Server,我正在开发一个系统,该系统应该部署到客户的本地SQL Server中。然后,系统应在无人值守的情况下一次运行数年,并具有高数据库吞吐量(许多插入/删除),并与客户进行通信。有些人似乎通过定期备份或日志截断“正确”配置了数据库,而另一些人只是让事务日志增长,直到磁盘已满 当磁盘已满时,显然不仅我的应用程序,而且在同一磁盘上使用DBs的其他无关系统都会停止工作 现在,你可以说这是客户的错,但如果你想让他们使用你的系统,你不能告诉他们 那么,作为开发者,我能做些什么来解决这个问题呢?系统是否应该监控日

我正在开发一个系统,该系统应该部署到客户的本地SQL Server中。然后,系统应在无人值守的情况下一次运行数年,并具有高数据库吞吐量(许多插入/删除),并与客户进行通信。有些人似乎通过定期备份或日志截断“正确”配置了数据库,而另一些人只是让事务日志增长,直到磁盘已满

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

现在,你可以说这是客户的错,但如果你想让他们使用你的系统,你不能告诉他们

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

当然,在12页的设置文档中,我有一段加粗的关于日志文件增长的注意,但是现在似乎没有人完全阅读它们

然后,系统应在无人值守的情况下一次运行数年,并具有高数据库吞吐量(许多插入/删除),并与客户进行通信

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

那么,作为开发者,我能做些什么来解决这个问题呢

您应该让他们明白,这不是您所支持的,这必须由他们来处理,并要求他们雇用DBA

日志增长,这对于OLTP系统来说是不可避免的。如果您正在寻找最佳实践,下面是一些

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

并查看此链接以了解发生这种情况的更多信息:

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

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

create table #t
(
dbname sysname,
logsize float,
logspaceused float,
status bit
)
insert into #t
exec ('
dbcc sqlperf(''logspace'')')
您还可以查看mssql提示以获取高级监控信息:

我认为切换到简单恢复模式不是一个选项?@RogerWolf不会在没有用户通知的情况下自动进行,因为DBA可能出于某种原因选择了恢复模式。如果他们有DBA,那么这肯定不是你的问题。但是,提供一些UI让用户选择“最小占用空间”模式(短数据保留+简单恢复)可能是有意义的。我可以告诉他们雇用DBA,但即使他们不听,他们仍然会认为他们的SQL server崩溃是我的错。因此,我想当我的应用程序失败时,影响应该得到控制,而不是整个SQL server。如果某个特定的数据库没有空间放置tlog,只有它将不可用,但由于它与其他数据库放在同一个磁盘中(我想),所有这些都将在@Alexander时停止