建立SQL Server可以存取的網路磁碟機
一直以來自己都認為SQL Server是無法利用網路磁碟機來當作備份的目的地,
每次只要將備份目的指向網路磁碟機都會產生找不到路徑的錯誤訊息。因此如
想備份到網路上的某台電腦上的分享資料夾都需要用UNC名稱來做
(例 : Backup Database abc To Disk=N'\\ComputerName\ShareFolder')。
然而今天無意間看見一篇文章才讓我知道原來SQL Server是可以用磁碟機代號
來存取網路磁碟機的。如下圖所示我們先建立一個網路磁碟機X,
它對應的路徑是 \\Rock_Win8\Share。
我們在我的電腦中可以看見剛剛建立的網路磁碟機X(如下圖紅色圈選處)。
而我們在SSMS中開啟檔案視窗中確都看不見網路磁碟機X(如下圖),因此更不用說
可以做任何存取的動作。因此如執行backup database abc to disk=N'X:\abc.bak'
這樣的指令也都會發生找不到路徑的錯誤訊息。
那該用甚麼方式才能讓SQL Server可以存取的到網路磁碟機呢?
其實就是讓SQL Server自己建網路磁碟機自己用。
因此我們在SSMS中利用XP_CMDSHELL來執行net use指令建立一個網路磁碟機Y
(如下圖所示)。XP_CMDSHELL預設是被關閉不能使用,因此先用sp_configure
來開啟XP_CMDSHELL。
完成上一個步驟後,我們在SSMS檔案視窗中就看見網路磁碟機Y(如下圖),
也就可以存取網路磁碟機Y了。(注意 : 但此時建立的網路磁碟機Y,我們在
我的電腦中確是看不見也不能用,只有SQL Server可以Access而已)。
當我們不需要網路磁碟機Y時,可在SSMS中執行 EXEC XP_CMDSHELL 'net use Y: /delete'來刪除。
總結 :
1 . 自己的網路磁碟自己建,我們在OS中建立的網路磁碟,SQL Server無法Access。
而SQL Server用XP_CMDSHELL建立的網路磁碟機,在OS中也是看不見,
只有SQL Server自己可以存取。
2 . 一但SQL Server服務重啟,網路磁碟機便消失不可使用,需再重新利用XP_CMDSHELL建立。
3 . 在SQL Server用XP_CMDSHELL執行net use時,如沒指定帳密。預設是用SQL服務帳戶來驗證。
參考資料來源 :
https://msdn.microsoft.com/zh-tw/library/ms179313.aspx
我是ROCK
rockchang@mails.fju.edu.tw