iT邦幫忙

0

Sql 備份批次檔,工作排成器無法執行

kenny 2013-10-08 18:14:4411569 瀏覽

如提 小弟因為SQL裝的是express 的版本 寫了一個批次檔,要備份,但是在排成氣裡面都無法正常執行可以在資料夾裡面執行都正常
========執行批次檔內容==============
sqlcmd -S . -i XMKEYDBLY50.sql
forfiles /p e:\ly\ /m *.dat /d -7 /c "cmd /c del /f @path"

============SQL備份檔==============
GO
DECLARE @backupTime VARCHAR(20)
DECLARE @fileName VARCHAR(1000)
SELECT @backupTime=(CONVERT(VARCHAR(8), GETDATE(), 112) +REPLACE(CONVERT(VARCHAR(5), GETDATE(), 114), ':', ''))
SELECT @fileName='e:\ly\XMKEYDBLY50_'+@backupTime+'.dat'
backup database XMKEYDBLY50 to disk=@fileName

2 個回答

2
player
iT邦大師 1 級 ‧ 2013-10-08 20:02:02
最佳解答

無解
死心吧
Windows的工作排程
無法正常跑 bat 檔的
要把 bat 檔轉成 exe 檔才能放在Windows的工作排程裡跑

看更多先前的回應...收起先前的回應...
kenny iT邦新手 5 級 ‧ 2013-10-08 20:03:54 檢舉

轉了也一樣

小成 iT邦高手 10 級 ‧ 2013-10-09 10:30:28 檢舉

咦?
那我怎麼可以在排程中跑BAT?
之前都是用BAT在排程中跑NTBACKUP...

player iT邦大師 1 級 ‧ 2013-10-09 12:12:53 檢舉

我是手動從檔案總管點 bat 去跑, OK
但是放到工作排程, 怎樣都跑不起
我是在 bat 裡跑 sqlcmd 去備份 db
再用 7-zip 去壓縮檔案
再 xcopy 到連線磁碟機的遠端分享資料夾
Windows工作排程是給Administrator權限去跑的
可是每次該執行的時候, 直接回傳 -1 連 sqlcmd 都沒跑就跳掉了

小成 iT邦高手 10 級 ‧ 2013-10-09 16:32:23 檢舉

剛實際測一下,真的可以啊

你要不要在BAT最後加個pause來看看他跑啥錯誤阿...

小成 iT邦高手 10 級 ‧ 2013-10-09 16:34:10 檢舉

其實重點就是eigen大所說的【要注意排程啟動時的權限、路徑位置、程式的位置、相關檔案的位置】
路徑與權限
所以我會盡量寫絕對路徑...
然後注意工作路徑...
如果SQLCMD沒跑,那找一下SQLCMD在哪,前面的完整的絕對路徑都寫進去批次中,然後再試試看

kenny iT邦新手 5 級 ‧ 2013-10-10 13:25:02 檢舉

我後來在
sqlcmd -S . -i "加入.SQL的絕對路徑"XMKEYDBLY50.sql
forfiles /p e:\ly\ /m *.dat /d -7 /c "cmd /c del /f @path"

目前有正常RUN了 再觀察幾天看看

hagtewei
我記得mssql的權限,區分滿多的
要找對權限在給"排程"執行
有需要google一下比較保險

6
eigen
iT邦新手 1 級 ‧ 2013-10-09 09:41:32

可以手動執行,就可以排程執行

要注意排程啟動時的權限、路徑位置、程式的位置、相關檔案的位置。

最簡單的做法就是寫一個 test.bat,將你要的動作,寫在這個檔案內,測試ok 後

將這個檔案 copy 到其它目錄下,再測試,如果ok ,那表非batch file 沒有受路徑限制

再用排程來call 這個批次檔。

排程絕對可以call batch file ,這種手法,我已用了好多年。會出問題,一定是我寫錯,而不是排程有bug.

看更多先前的回應...收起先前的回應...
player iT邦大師 1 級 ‧ 2013-10-09 12:13:59 檢舉

你的 Windows 是那一版的?

外獅佬 iT邦大師 1 級 ‧ 2013-10-09 12:25:03 檢舉

盜版....毆飛

正解!

其實這不是大家的問題...

我也研究了好久...

我發現真正的問題是出在大魔王身上....偷笑偷笑偷笑

沒人要問大魔王阿.....那我就保密嚕....偷笑

其實有時滿失落的...正義總是不能被伸張

因為人總是會有些障礙在....Orz

我要發表回答

立即登入回答