0

很少有 shell 脚本使用isql在 Sybase 数据库服务器上执行一些 sql 语句。我在日志中看到几条 Log Suspend 消息,问题是 shell 脚本成功退出。

数据库 MAIN_DB 中的事务日志几乎已满。您的事务将暂停,直到日志中有可用空间。

我需要拦截这些日志挂起消息并报告正确的错误。我该怎么做呢?我不确定如何在这里进行。当它发生时,它无法被清除,并且数据库管理员必须在一段时间后终止 spid,但脚本已经成功退出。因此,数据传输实际上并没有发生并被中止。这是我需要处理的场景。

请让我知道我们如何能够拦截 Log Suspend 并至少等待特定时间?

4

2 回答 2

2

你有两个问题。一是脚本没有正确检测错误。其次,事务日志经常被填满。

首先脚本需要有标准输出和错误输出到你的日志文件。当你使用>它时,它使用的是文件描述符 1。当你想捕获错误输出时,你需要使用2>文件描述符 2。所以命令如下所示。

isql > error.log 2> error.log

更好的是使用这个

isql 2>&1 > error.log

前面说让文件描述符 2 转到文件描述符 1。

现在要检测错误,请查找所有错误都在前面的“Msg”。

其次,要解决事务日志空间,您需要增加应该在自己的设备上的日志大小。然后您需要设置阈值以自动将完成的事务转储到磁盘文件。您需要调查以下命令。

sp_helpthreshold
sp_addthreshold
sp_thresholdaction

好 SQL,晚安。

于 2013-01-30T03:21:21.343 回答
0

您可以检查数据库中的进程,并查找'LOG SUSPEND'的进程状态。指定用户名是可选的。

sp_who {用户名}

于 2013-01-29T14:22:39.443 回答