【问题标题】:SQL Server Agent Job and gsutilSQL Server 代理作业和 gsutil
【发布时间】:2017-11-11 14:00:01
【问题描述】:

我可以从 Windows 的命令行使用 Windows 域帐户成功运行 gsutil 命令(设置服务帐户密钥等)。当我尝试使用 CmdExec 任务从 SQL 代理作业运行相同的命令时,作业挂起并且没有完成。我看不到任何日志记录,所以不知道它在等待什么。我已将作业设置为使用与手动运行 gsutil 命令相同的代理用户运行。

有什么想法可以让它工作或如何查看更多日志记录吗?

【问题讨论】:

    标签: sql-server google-cloud-storage gsutil


    【解决方案1】:

    您使用的是独立的 gsutil 吗?还是您在安装 Cloud SDK (gcloud) 时获得了它?

    如果作业挂起很长时间,它可能会在多次重试时卡住。要测试是否是这种情况,您可以在 .boto 文件或通过此选项的命令参数中将 num_retries 选项设置为非常小,但高于 0(例如 1):

    gsutil -o 'Boto:num_retries=1' <rest of command here...>
    

    需要注意的第二件事(至少对于 gcloud 不附带的 gsutil 版本)是 gsutil 默认在您的主目录中查找您的 boto 配置文件(它指定它应该使用的凭据)。如果您以其他用户身份运行 gsutil(也许您的 SQL 代理作业以自己的专用用户身份运行?),它将在 那个 用户的主目录中查找 .boto 文件。这同样适用于 gcloud 版本——gcloud 使用基于执行它的用户的凭据。您可以通过将 .boto 文件复制到作业有权读取的位置来避免这种情况,并在运行 gsutil 之前将 BOTO_CONFIG 环境变量设置为该路径。在 cmd shell 中,这看起来像:

    set BOTO_CONFIG=C:\some\path\.boto && gsutil <rest of command here...>
    

    注意:如果您不确定您通常使用的是哪个 boto 配置文件,您可以通过运行 gsutil version -l 并查看显示您的配置路径的行来查找。

    【讨论】:

    • 谢谢。事实证明 BOTO_CONFIG 是问题所在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多