【问题标题】:How to export the message section of a select query (JARED ZAGELBAUM RESTORE for SQL Server Express)如何导出选择查询的消息部分(JARED ZAGELBAUM RESTORE for SQL Server Express)
【发布时间】: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


【解决方案1】:

所以我能够通过启动命令提示符然后使用sqlcmd 函数来完成我想要的(捕获文件的输出,就像在 SSMS 中运行它时一样)。最终的导出脚本如下所示:sqlcmd -S servernamehere -d databasenamehere -E -Q "exec RestoreCommand" -s "," -o "C:\whereyouwantittogoandwhatyouwantittobenamed.txt"

在此处找到的文档:https://datatofish.com/how-to-export-sql-query-results-to-text-file/

然后只需将其放入一个 .bat 文件并创建一个计划,以根据您希望生成脚本的频率运行它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2017-01-21
    相关资源
    最近更新 更多