我正在使用 Ola Hallengren 的维护解决方案来备份我们环境中的 SQL 2012 Express 实例。我是一个全新的 DBA,只有 10 周大,所以我还不太熟悉,但我学得很快。我很确定我已经按照我们想要的方式配置了一切。我在我们的 express 实例的主数据库中创建了存储过程,我已经安排了每晚从 Windows 任务计划程序中执行的批处理文件,所有似乎都已设置和工作减去一个细节,记录到表中。
首先,我不太确定如何启用它,或者如果启用它可以在哪个数据库中找到该表?
其次,我想将结果记录到不同服务器\实例上不同数据库中的表中。这可能吗?如果是这样,是否有人可以指出任何方向,以便我进行设置?
谢谢!
该
dbo.CommandLog
表将位于您创建它的任何数据库中。默认情况下,它将位于master
(这里是MaintenanceSolution.sql脚本的一部分):如果你想登录另一台服务器,你需要准备好应对不稳定或死连接,以及在链接服务器上写入大量信息的潜在延迟。
如果你真的想这样做,那么
dbo.CommandLog
在另一个实例上创建表,然后在当前存在该表的数据库中:在
dbo.DatabaseBackup
与过程相同的数据库中检查表:它之所以失败,是因为它明确地在寻找一个表——它是一个同义词的事实不会阻止任何后续的日志记录调用工作(同样,只要一切——包括同义词——都在同一个数据库中)。您可以尝试仅注释掉该
RAISERROR
行或完全删除支票。只需记住在您对过程部署更新时随时执行此操作。您可能会考虑向 Ola 寻求支持同义词或视图的功能,以便将日志记录表保存在其他地方。如果您查看
[dbo].[CommandExecute]
Ola 的脚本使用的存储过程,他们似乎希望[dbo].[CommandLog]
日志记录表存在于执行脚本的同一数据库中。我知道您可以将这些命令记录到另一个 SQL Server 实例的唯一方法是为该远程实例创建一个链接服务器,并向
[dbo].[CommandLog]
表添加一个 AFTER 插入/更新触发器,这将插入/更新表的远程实例版本. 您仍然需要定期从本地实例中删除条目,因为它们最初会先记录在那里。