【发布时间】:2014-12-18 14:19:59
【问题描述】:
我有一个工作但相对冗长的 SQL 脚本,我想每晚运行它并将结果保存在 csv 文件中。我的首选方法 SQL Server 作业调度程序似乎无法将查询结果保存到文件中。我还尝试使用 Windows 任务调度程序和以下 bcp 命令调度任务:
bcp "MY QUERY HERE" queryout C:\path\to\Desktop\RTFS.txt -c -d servername -U uname -P password
bcp 上的连接超时。我知道 SQL Server 正在接受远程连接,因为我可以从网络上的 Linux 服务器连接到它,并在 Python 中完成我想要的一切。遗憾的是,尽管有人告诉我这必须是一个仅限 Windows 的解决方案,所以我不能使用有效的 Python/Linux 实现。
有没有办法将输出保存为来自 SQL Server 作业的文件或使用任务计划完成相同的结果?
【问题讨论】:
-
我怀疑你的意思是 SQL Server 代理。代理不会将任何内容保存到文件中,而是您执行的命令导出数据。如果没有文件,则命令失败。您应该配置您的作业和
bcp调用以记录任何错误。 -
顺便说一句,您确定您获得了连接,而不是命令 tiemout?连接超时通常意味着您使用了错误的服务器名称。代理服务通常与数据库在同一台机器上运行,因此网络问题是不可能的。防火墙问题也是如此——你会立即被拒绝。如果您收到命令超时,那是因为作业耗时过长
-
@TabAlleman 不,不幸的是。
-
@TabAlleman SSIS 批量导出任务本质上是 bcp,具有图形界面,可防止您弄乱参数。如果有效,
bcp也应该有效 -
您可以使用导入/导出向导。最后,您可以选择将任务保存为 DTS 文件(即,以前称为 SSIS 的文件),然后您可以通过 SQL 代理调用该文件。
标签: sql-server scheduled-tasks bcp