我正在创建一个需要检查文件是否存在的存储过程。它使用master.dbo.xp_fileExist
问题是xp_fileExist结果似乎根据我使用的SQL Server登录而改变。似乎只有当登录具有SYSADMIN服务器角色时才有效。
因此,如果我使用ACCOUNT:ACC1, PASSWORD:PWD1登录,并且ACC1没有SYSADMIN服务器角色,我得到以下结果:
exec master.dbo.xp_fileExist 'adsnt.dll'
File Exists File is a Directory Parent Directory Exists
----------- ------------------- -----------------------
0 0 0
如果我然后进入SSMS并将SYSADMIN角色分配给帐户ACC1,我得到以下结果:
File Exists File is a Directory Parent Directory Exists
----------- ------------------- -----------------------
1 0 1
我似乎找不到关于这个的任何文档。对这类查询的大多数响应表明,登录不影响文件访问,相反,它取决于SQL Server运行的服务帐户。但很明显,事实并非如此(或者,至少,这不是全部)。有人知道这是怎么回事吗?
——修改
exec master.dbo。xp_fileExist adsnt.dll">
——To this
SELECT * FROM sys。dm_os_file_exists (adsnt.dll)
不需要SysAdmin角色就可以工作