[英]using sqlcmd command to get the result to a file in a shared path with user name and password protection
我有一个sqlcmd命令,它将把结果提供给一个文件,该文件将放置在共享文件夹中。
exec xp_cmdshell 'sqlcmd -s $dataSource -d $dbName -i $inputFilePath -o $outputFilePath'
现在,如果共享驱动器受到保护并且需要用户名和密码,该怎么办。 如何在Sqlcmd中提供凭据以绕过身份验证。
xp_cmdshell
将在以下Windows NT(Windows)凭据下执行:
CREATE CREDENTIAL
如果您坚持使用默认上下文访问远程资源(文件共享),那么您将无所适从,因为对远程资源的模拟访问是“双跳”,并且在某些情况下要求约束委派 (例如,使用NT登录)。
更好的选择是将远程共享\\\\server\\share
本地显式映射为驱动器X:
,然后访问驱动器X:
:。 在本地映射驱动器允许存储持久的凭据,但是您必须小心确保映射在服务帐户会话中可见。 这基本上是不可能的,请参阅映射服务要使用的网络驱动器 。
现在,您知道了为什么不能正确执行此操作,并且会自己拉头发,同时要从不断奋斗中变白以解决故障,退后一步并从另一个角度查看问题:为什么要使用xp_cmdshell
调用sqlcmd
吗? 从作业/进程直接调用sqlcmd
。 SQL代理拥有所有支持你需要的,只是设置工作,根据与appropiate凭据的代理帐户运行的同时连接到远程共享和目标$datasource
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.