啟用 SQL Server 在遠端電腦/磁碟機上進行備份

啟用 SQL Server 在遠端電腦/磁碟機上進行備份

我有一個 SQL Server(2000、2005 和 2008),我想使用 SQL 代理程式(甚至是一個簡單的備份資料庫“xxx”到磁碟=“yyy”)來備份到遠端磁碟機。

即:我在 SQL 機器中有一個映射驅動器,例如:「M:」映射到 \\otherbox\someshare

預設情況下,SQL Server 不允許您備份到此類驅動器,但我認為有一種方法可以實現這一點。有人可以指出我的文檔嗎?

提前致謝。

答案1

指定目標時使用 UNC 路徑 - SQL 代理程式沒有「映射」「磁碟機」的概念。

此外,SQL 代理通常作為「本機服務」或「本機系統」運行,因此無權在其他電腦上進行遠端共用。

您有幾個選擇:

  • 以網域中的角色帳戶執行 SQL 代理程式。授予該帳戶寫入您想要儲存備份的目錄/共享的權限。

  • 將 SQL 代理程式作為「網路服務」運行。它將使用運行服務的電腦的網域電腦帳戶向共用伺服器進行身份驗證。授予該帳戶寫入您想要儲存備份的目錄/共享的權限。

  • 如果您沒有網域,請在託管 SQL 代理程式的電腦和託管備份檔案的電腦上建立具有相同使用者名稱和密碼的帳戶。變更 SQL 代理程式以作為此「角色」帳戶執行,並授予該帳戶寫入您想要儲存備份的目錄/共用的權限。 (「窮人的領域」......)

答案2

我完全同意關於 UNC 路徑的兩個答案。

我還想補充一點,即使使用映射驅動器,您也有一個簡單的解決方法。您可以對伺服器的任何正常磁碟機執行備份。然後你可以添加

xp_cmdshell 'XCOPY [source] [destination] \flags'

您執行的作業或 SQL 腳本的 SQL 命令。

使用 xp_cmdshell 你可以做更多 - 例如運行外部存檔命令行工具,如 7z 來壓縮文件,然後將其複製到映射驅動器(當遠端連接太慢時...)

PS:忘記提及可以透過使用外圍區域設定工具並執行 sp_configure 來啟用和停用 xp_cmdshell(預設情況下它是停用的)

答案3

如果 SQL Server 不在網域帳戶下執行,您可以按照本文中的描述為 sqlserver 帳戶(不是您的帳戶)來對應網路磁碟機堆疊溢位答案

首先需要啟用xp_cmdshell

-- allow changes to advanced options 
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO

然後您可以使用以下命令映射驅動器:

EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'

最後您可以備份到該映射磁碟機:

BACKUP DATABASE myDB TO DISK = 'z:\file.bak'

答案4

請記住,SQL Server 非常無法容忍網路延遲。如果它們發生(而且往往會發生),備份就會失敗。我根本不建議在生產環境中採用這種做法。

最好在本地備份一下,然後複製。

相關內容