您好,登錄后才能下訂單哦!
數(shù)據(jù)遷移后,使用SQL Server 2012 備份數(shù)據(jù)庫,備份完成后自動壓縮成rar文件,以前執(zhí)行沒有問題的語句現(xiàn)在只能做備份,而不能自動壓縮并刪除備份,說明問題出在執(zhí)行備份后壓縮時(shí)出現(xiàn)問題。將語句復(fù)制到查詢分析器執(zhí)行報(bào)錯(cuò),提示“RAR.EXE不是內(nèi)部或外部命令,也不是可運(yùn)行的程序 或批處理文件”。
SQL語句如下:
/*自動壓縮文件,并在壓縮完成后刪除原文件*/
declare @sqlPathB varchar(150) ---數(shù)據(jù)路徑
set @sqlPathB='RAR.EXE a -dw -ep E:\EFBackup\EFNETSYS\EFNETSYS'+rtrim(convert(varchar(20),getdate(),112))+'.rar ' --創(chuàng)建壓縮文件及存放路徑,-df或-dw表示壓縮后即刪除原文件,-ep表壓縮包內(nèi)不帶路徑
+'E:\EFBackup\EFNETSYS\EFNETSYS'+rtrim(convert(varchar(20),getdate(),112))+'0000.bak' --取被壓縮文件及路徑
exec xp_cmdshell @sqlPathB
首先,檢查環(huán)境變量。
自動壓縮需調(diào)用WinRar的Rar.exe,我的WinRar安裝在D盤,上面的SQL語句執(zhí)行時(shí),需使用WinRar安裝目錄下的Rar.exe,因此,環(huán)境變量中必須添加WinRra安裝路徑。經(jīng)檢查發(fā)現(xiàn),因?yàn)閿?shù)據(jù)庫遷移,環(huán)境變量忘記添加。按以下順序添加(以Win server 2008為例):
1、桌面上右鍵【計(jì)算機(jī)】,找到【屬性】,點(diǎn)擊【高級系統(tǒng)設(shè)置】,調(diào)出【系統(tǒng)屬性】對話框,并找到【環(huán)境變量】
2、點(diǎn)開【環(huán)境變量】,在【系統(tǒng)變量】里,找到并選中【Path】變量,點(diǎn)擊【編輯】以打開【編輯系統(tǒng)變量】對話框
3、在打開的對話框里,將WinRar的安裝路徑放在【變量值】的最后,我這里是D:\Program Files\WinRAR,這里要注意,新放置的路徑,與其他路徑要用半角分號進(jìn)行分隔。
4、添加完后,一路確定返回即可。
5、測試是否正常,在CMD中,執(zhí)行“rar.exe”,回車,窗口列出命令用法,說明設(shè)置成功。
設(shè)置完成后,應(yīng)該可以正常使用,誰知,執(zhí)行SQL語句后依然不能正常進(jìn)行壓縮,問題仍未解決,既然在DOS命令窗口rar.exe可以正常執(zhí)行,說明問題與壓縮命令沒有關(guān)系,繼續(xù)查找原因。
其次,檢查SQL Server設(shè)置。
因?yàn)橹皇窃赟QL中調(diào)用xp_cmdshell組件,現(xiàn)在rar.exe在DOS命令窗口可以正常運(yùn)行,現(xiàn)在只好從SQL Server入手查找原因。因?yàn)閿?shù)據(jù)庫壓縮備份是利用SQL Server代理來自動執(zhí)行的,現(xiàn)從這里入手:
1、打開SQL Server配置管理器,找到SQL Server服務(wù),查看SQL Server代理服務(wù)
2、突然發(fā)現(xiàn)SQL Server代理的登錄身份為LocalService。
想到以前也有一次是因?yàn)榈卿浬矸輰?dǎo)致SQL使用問題,后來改成LocalSyste就可以正常使用,懷疑是登錄身份的權(quán)限不足,導(dǎo)致無法正常調(diào)用rar.exe導(dǎo)致的。
3、修改SQL Server代理的登錄身份為LocalSystem。
在SQL代理服務(wù)上右鍵,選擇屬性,打開SQL代理屬性對話框,并在登錄身份為的內(nèi)置賬戶下接菜單,將Local Service更為Local System,之后點(diǎn)擊確定。
系統(tǒng)提示因帳戶變更,SQL代理服務(wù)重啟,點(diǎn)擊是重啟服務(wù)即可。
設(shè)置完成后,再次執(zhí)行SQL語句,發(fā)現(xiàn)壓縮成功。
總結(jié):
xp_cmdshell在執(zhí)行cmd命令時(shí),除要正確配置必要的環(huán)境變量外,還要給予命令執(zhí)行所涉及到的必須的權(quán)限。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。