如何检查SQL代理服务帐户可以访问我目前使用此查询找出如果SQL有权在UNC目录
问题描述:
,如何检查SQL代理服务帐户可以访问我目前使用此查询找出如果SQL有权在UNC目录
EXEC master.dbo.xp_fileexist“\服务器名\共享名”
但是这个查询是以我登录的用户身份运行的,有没有什么办法可以将它作为SQL代理服务帐户执行来检查用户是否有权访问?
答
据我所知,sql_agent
在system\NetworkService
帐户下运行,并且它无法访问其他计算机的UNC路径(OR)。
您可以通过转至control panel -> services
或Sql server configuration manager
来更改运行sql_agent
的帐户。
答
下面的脚本应该得到你所追求的:
USE master
GO
DECLARE @ServiceAcct sysname, @Path as varchar(256)
SET @Path = '\\UNC\Path\To\Test\Access'
EXECUTE dbo.xp_instance_regread
@rootkey = N'HKEY_LOCAL_MACHINE',
@key = N'SYSTEM\CurrentControlSet\Services\MSSQLServer',
@value_name = N'ObjectName',
@value = @ServiceAcct OUTPUT
EXECUTE AS LOGIN = @ServiceAcct;
EXEC master.dbo.xp_fileexist @Path
EXECUTE master.dbo.xp_instance_regread
@rootkey = N'HKEY_LOCAL_MACHINE',
@key = N'SYSTEM\CurrentControlSet\Services\SQLServerAgent',
@value_name = N'ObjectName',
@value = @ServiceAcct OUTPUT
EXECUTE AS LOGIN = @ServiceAcct;
EXEC master.dbo.xp_fileexist @Path
答
最重要的事情是,占执行SQLSERVR.EXE。
被称为服务帐户的帐户必须有权访问UNC路径。
它与SQL Server(MSSQLSERVER)服务的acconut相同。
对不起,我不想更改SQL代理帐户。我想手动运行上面显示的查询,但是将其作为SQL代理帐户执行 – user1345260
如上所述,SQL代理运行在无法访问UNC共享的Network_service帐户下。 – Rahul