MSSQL:如何远程运行扩展存储过程xp_fileexist?

时间:2012-08-30 09:07:59

标签: sql-server procedure

有什么方法可以实现这个目标吗?我可以完全控制本地和远程服务器。

2 个答案:

答案 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下测试了它,然后重新配置为在域帐户下运行。