DECLARE @DB_NAME SYSNAME
DECLARE @DB_BACKUP_PATH VARCHAR(120)
DECLARE @JOB VARCHAR(120)
SET @DB_NAME='dbdb' --實際資料庫名稱
SET @DB_BACKUP_PATH='E:\SQL_backup\'+@DB_NAME+'_'+CONVERT(VARCHAR(8),GETDATE(),112)+'.BAK' --備份路徑
SELECT @DB_BACKUP_PATH
SET @JOB='BACKUP DATABASE '+ @DB_NAME +' TO DISK= '+@DB_BACKUP_PATH+' WITH INIT'
EXEC(@JOB)
GO
DECLARE @DATE NVARCHAR(50)
SET @DATE=CONVERT(VARCHAR(50),DATEADD(DAY,-29,GETDATE()),112) --PRINT @DATE --刪除30天之前的資料
DECLARE @SQL_CMD NVARCHAR(800)
SET @SQL_CMD='EXECUTE master.dbo.xp_delete_file 0,N''E:\SQL_backup\'',N''*'',N'''+@DATE+'''' --PRINT @SQL_CMD
EXEC SP_EXECUTESQL @SQL_CMD
錯誤訊息如下
E:\SQL_backup\dbdb_20121122.BAK
訊息 102, 層級 15, 狀態 1, 伺服器 IBMSVR\SQLEXPRESS, 行 1
接近 'E:' 之處的語法不正確。
訊息 319, 層級 15, 狀態 1, 伺服器 IBMSVR\SQLEXPRESS, 行 1
接近關鍵字 'with' 的語法不正確。如果這個陳述式是一般資料表運算式或 xmlnamespaces 子句,前一個陳述式就必須以分號結束。
(1 個受影響的資料列)
utopia提到:
SET @JOB='BACKUP DATABASE '+ @DB_NAME +' TO DISK= '+@DB_BACKUP_PATH+' WITH INIT'
EXEC(@JOB)
缺少單引號
SET @JOB='BACKUP DATABASE '+ @DB_NAME +' TO DISK='' '+@DB_BACKUP_PATH+''' WITH INIT'
EXEC(@JOB)
謝謝大大的回應,
但加了單引號後,
變成如下錯誤:
可是明明就有dbdb資料庫啊?!!
sorry,的確是我將DB名字打錯了,現在已經可以run了
但是run完E:\SQL_backup\資料夾底下
竟找不到任何*.BAK
不知這又是何原因呢?