Sql-Server
查找 SQL Server 服務在哪個帳戶下執行 BACKUP
我們的 DBA 出局了,我正在嘗試將我們的(遠端)開發數據庫備份到 UNC 路徑。我在以特定 Windows 域帳戶(例如
CORP\myUser
)登錄 Management Studio 時執行備份操作。我檢查了這個域帳戶對 UNC 路徑具有 FULL CONTROL 權限\\nameOfMachine\backup\
。當我嘗試執行以下操作時
CORP\myUser
BACKUP DATABASE [DEV] TO DISK = N'\\nameOfMachine\backup\dev.bak' WITH COPY_ONLY, INIT;
我收到錯誤
Cannot open backup device '\\nameOfMachine\backup\dev.bak'. Operating system error 5(Access is denied.).
這似乎表明 SQL Server 用於執行備份命令的任何帳戶都無權訪問該 UNC 路徑。
我沒有辦法 RDP 到開發數據庫伺服器並找出 SQL Server 使用哪個帳戶來執行上面的備份命令。有沒有辦法使案例如動態管理視圖從 Management Studio 中找出這一點?
如果您在某個 Windows/SQL Server 帳戶下執行 BACKUP 查詢,實際上是 SQL Server 代理帳戶“執行”BACKUP 並且需要對 UNC 路徑的完全控制權限。因此,您必須能夠允許該帳戶(或每個人)對該路徑具有完全控制權限。要找出 SQL Server 代理以哪個帳戶執行,請查詢sys.dm_server_services。它要求您(或其他人)在伺服器上具有 VIEW SERVER STATE 權限。
BACKUP
將在模擬上下文下訪問 UNC。這是一種“雙跳”情況,需要配置 Kerberos 約束委派。這已經在https://stackoverflow.com/questions/18749224/restore-database-from-a-shared-folder得到解答