使用 SSMS 進行備份時出錯
我正在使用 SSMS。我有大約 5 次登錄。對於特定的登錄,我擁有除 sysadmin 之外的所有伺服器角色。這是一個 sql 登錄(不是 windows 身份驗證)。在使用者角色中,它擁有幾乎所有數據庫的所有權限。對於某些數據庫,它只有數據讀取器。
現在,當我嘗試使用 SSMS 備份數據庫並嘗試通過點擊按鈕選擇備份目標時,我收到以下錯誤:
“C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup
無法訪問伺服器上的指定路徑或文件。驗證您是否具有必要的安全權限並且該路徑或文件存在。
如果您知道服務帳戶可以訪問特定文件,請在“定位”對話框的“文件名”控制項中鍵入該文件的完整路徑。”
即使我有 db_owner 和所有權限,我也會收到此錯誤。但是,如果我在文件名欄位中手動選擇路徑,則它允許進行備份而不會出現任何錯誤。
那麼為什麼會發生呢?我希望該使用者在沒有這些錯誤消息的情況下進行備份。(但我不能為使用者提供系統管理員)。我該如何解決?
我已經有一些文章說明使用 SQL 查詢並
sqlcmd
進行備份。但我希望它使用 SSMS 工作。
這是我自己的問題的答案 SSMS 使用“xp_fixeddrives”列出 PC 中的驅動器。點擊用於選擇備份路徑或瀏覽目錄的按鈕時,SSMS 也使用相同的方法。
生成錯誤是因為“exec xp_fixeddrives”在由非系統管理員帳戶執行時不返回任何記錄。當您使用具有系統管理員權限的使用者執行相同的操作時,“exec xp_fixeddrives”返回驅動器列表。所以這是 SSMS 的問題,對於執行 SQL 代理服務的文件夾或帳戶等的任何權限都不是問題。(我已經測試過)
SSMS 假設您必須具有系統管理員權限才能執行操作,還有許多其他功能;
對象資源管理器中的大多數節點都假設它,對象的腳本是我知道的一個例子。
範例:創建一個具有查看任何定義的使用者並以該使用者身份登錄到 SSMS。每當您展開任何節點時,您都會遇到錯誤,理論上他們應該能夠查看它(當然,登錄可以通過查詢查看元數據。
CREATE LOGIN ViewAnyThing WITH PASSWORD = 'NotTheRealPassword'; GRANT VIEW ANY DEFINITION TO ViewAnyThing;
這不是 SQL 登錄權限問題。而是 SQL Server 服務帳戶無法訪問備份的位置。要解決此問題,您需要在 Windows 中授予對 SQL Server 服務在其下執行的帳戶的路徑的訪問權限。