我们有一个 SQL Server 代理作业,它运行维护计划以重新索引服务器上的所有数据库。最近这失败了,但工作历史记录没有提供足够的信息来诊断问题。
在作业历史记录中,它指出作业失败。该作业由用户 foo\bar 调用。运行的最后一步是第 1 步(重建索引)。
在详细信息窗口中有以下形式的多条消息:
Executing query "ALTER INDEX [something] ON [a...".: 0% complete End Progress Progress: 2015-03-15 22:51:23.67 Source: Rebuild Index Task
Run Code Online (Sandbox Code Playgroud)
正在运行的 SQL 语句被截断,我假设语句的输出也被截断,从而使我无法确定哪个特定语句失败以及为什么失败。有没有办法提取这些消息的全文?
我们的日常任务是使用相关生产数据库的备份覆盖许多开发数据库。备份由生产服务器上的维护计划生成,然后通过 FTP 传输到开发服务器。每天我们运行一个类似这样的 SQL 语句来覆盖每个数据库:
RESTORE DATABASE [Database1]
FROM DISK = N'D:\path\to\Database1_backup_2015_02_05_190004_7401803.bak'
WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
GO
Run Code Online (Sandbox Code Playgroud)
每次我们运行它时,我们都必须用正确的最新文件替换文件名。我想以某种方式自动执行此操作以最大程度地减少操作员错误的机会。问题是我们无法控制.bak文件的名称(尽管格式是一致的 - 数据库名称、日期、时间以及任何七位数),并且该文件夹通常包含几天的备份。