2017-06-09 114 views
1

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

任何想法如何让这个工作或如何看到更多的日志?

回答

1

你在使用独立gsutil吗?或者您是否将其作为安装Cloud SDK(gcloud)的一部分?

如果作业挂了很长时间,可能会停止多次重试。为了测试,如果是这样的话,你可以设置NUM_RETRIES选项非常小,但高于0(如1)无论是在你的.boto文件或通过该选项的命令行参数:

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

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

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

注意:如果你不知道这博托配置文件你正常使用,你可以找到通过运行gsutil version -l看着那行显示你的配置路径。

+0

谢谢你。事实证明,BOTO_CONFIG是问题。 – jimmy