【发布时间】:2019-01-23 18:30:18
【问题描述】:
我正在使用 SQL Server 2012-17 Express 并尝试设置 Jared Zagelbaum 的恢复脚本,该脚本除了用于 Ola 的数据库备份和命令日志之外。
我遇到的问题是脚本要求您创建一个作业,将存储过程的结果输出到 .txt 文件中。奇怪的是它输出的是 Messages 部分而不是 Results 部分。
我无法使用 Express 创建作业,因此我必须在 Windows 中安排一个任务来触发一个 .bat 文件,该文件说执行此 .sql 脚本。我对这个过程很好,但我遇到的是导出“消息”部分,因为这是需要导出到.txt 文件的内容。
我已经尝试过BCP,但它似乎只是导出了 0 的结果,因此它创建了一个具有正确名称和地址的空白 .txt 文件。任何人都知道如何使用 T-SQL 获取在 SQL Server Express 中导出的消息。我可以查询一些系统表吗?我正在尝试自动化此过程,因此复制/粘贴或右键单击并保存文件不是我想要的。
如果我需要详细说明某些事情,请告诉我。谢谢
【问题讨论】:
-
我认为这样的事情应该可以工作,但不会让我使用 'exec' 并给出错误 'Error = [Microsoft][ODBC Driver 13 for SQL Server]BCP 主机文件必须至少包含一列' DECLARE @stmt VARCHAR(8000); SET @stmt='BCP "exec RestoreCommand" QUERYOUT "C:\sqlscripts\test.txt" -c -T -S ' + @@SERVERNAME + ' -d ' + DB_NAME(); EXEC master.sys.xp_cmdshell @stmt;
-
问题是当我使用临时表甚至保存表来保存结果,然后尝试使用 BCP 导出结果时,它不再具有脚本生成的生成消息。
-
仅供参考,SQL Server Developer Edition 具有 SQL Server 提供的所有功能,但在允许的数据库大小方面受到限制。这不是一个选择吗?
-
嘿@UnhandledExcepSean 在路上,有可能但我正在进入一个有数百个数据库的环境,其中一些在 Express 上。我有点希望有人知道某种系统临时表可以存储抛出的消息?我真正想做的是1)捕获并导出结果的消息部分或2)弄清楚如何将其转换为返回结果的选择语句,因为我可以使用BCP导出那些。贾里德代码jaredzagelbaum.wordpress.com/2015/04/16/…
标签: sql-server sql-server-express