,如何檢查SQL代理服務帳戶可以訪問我目前使用此查詢找出如果SQL有權在UNC目錄
EXEC master.dbo.xp_fileexist「\服務器名\共享名」
但是這個查詢是以我登錄的用戶身份運行的,有沒有什麼辦法可以將它作爲SQL代理服務帳戶執行來檢查用戶是否有權訪問?
,如何檢查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