有什么方法可以实现这个目标吗?我可以完全控制本地和远程服务器。
答案 0 :(得分:0)
您可以像任何其他SP一样运行它。但请注意,您将只获取有关远程文件的数据。如果您需要有关本地文件的数据,则无法在SQL Server端执行此操作。您需要在客户端进行检查,并且(如果需要在服务器端使用这些数据)将其作为参数发送到SQL Server。
答案 1 :(得分:0)
如果我做得对,你试图用网络路径执行xp_fileexist来访问远程服务器,例如:
exec master.dbo.xp_fileexist "\\another_server\path\file"
如果您不能这样做的主要原因 - 您的SQLSERVER服务正在LOCALSYSTEM帐户下运行。此帐户是本地计算机帐户和has no access to network(虽然据我所知there is a way to grant access,可以将server2上的文件夹与server1帐户的本地系统共享)。因此,如果将SQL Server服务配置为在DOMIAN \ USER下运行,则可以运行上述命令并获得正确的结果。还要注意,如果你在域帐户下运行你的SQL服务器,那么如果用户有权访问你的SQL服务器就可以远程执行XP_CMDSHELL,那么它将很快成为域安全系统的漏洞。
我刚刚在localsystem下运行的SQL server 2000下测试了它,然后重新配置为在域帐户下运行。