sqlcmd 來完成資料庫的備份
http://www.dotblogs.com.tw/rainmaker/archive/2013/08/07/113631.aspx
SET QUOTED_IDENTIFIER OFF
SET NOCOUNT ON
PRINT 'Process Name : Full SQL Server System & Application DBs Backup to BAK file'
DECLARE
@FIRST_BACKUP INTEGER,
@DB_NAME VARCHAR(128),
@CMD_LINE VARCHAR(512),
@BACKUP_PATH VARCHAR(64),
@DB_REOCVERY_MODE NVARCHAR(128),
@DB_STATUS NVARCHAR(128)
-- Must change @BACKUP_PATH
-- 指定存放備份檔的路徑
SET @BACKUP_PATH = 'E:\DB_Backup\'
--取得要備份的資料庫資料,一些練習用的資料庫可以不用備份
DECLARE SERVER_DB_CURSOR CURSOR
FOR
SELECT
name
,convert(nvarchar(128),(DATABASEPROPERTYEX ( name , 'Recovery' )))
,convert(nvarchar(128),(DATABASEPROPERTYEX ( name , 'Status' )))
FROM master..sysdatabases (nolock)
WHERE name != 'tempdb' and name != 'pubs' and name != 'Northwind' and name != 'model'
ORDER BY dbid
-- 開始依CURSOR 執行備份
OPEN SERVER_DB_CURSOR
FETCH NEXT FROM SERVER_DB_CURSOR INTO @DB_NAME, @DB_REOCVERY_MODE, @DB_STATUS
WHILE ( @@FETCH_STATUS != -1 )
BEGIN
SELECT "Backup Process Begin At" = GETDATE(), "Backup DB Is " = @DB_NAME
IF ( @DB_STATUS = 'ONLINE' )
BEGIN
IF (@DB_REOCVERY_MODE = 'SIMPLE')
BEGIN
SELECT @CMD_LINE = 'BACKUP DATABASE ' + @DB_NAME + ' TO DISK = ' + '''' + @BACKUP_PATH + @DB_NAME + '.BAK' + '''' + ' WITH INIT, SKIP'
PRINT (@CMD_LINE)
EXEC (@CMD_LINE)
END
ELSE
BEGIN
SELECT @CMD_LINE = 'BACKUP DATABASE ' + @DB_NAME + ' TO DISK = ' + '''' + @BACKUP_PATH + @DB_NAME + '.BAK' + '''' + ' WITH INIT, SKIP'
PRINT (@CMD_LINE)
EXEC (@CMD_LINE)
SELECT @CMD_LINE = 'BACKUP LOG ' + @DB_NAME + ' TO DISK = ' + '''' + @BACKUP_PATH + @DB_NAME + '.TRN' + '''' + ' WITH INIT, SKIP'
PRINT (@CMD_LINE)
EXEC (@CMD_LINE)
END
END
SELECT "Process End at" = GETDATE()
FETCH NEXT FROM SERVER_DB_CURSOR INTO @DB_NAME, @DB_REOCVERY_MODE, @DB_STATUS
END
CLOSE SERVER_DB_CURSOR
DEALLOCATE SERVER_DB_CURSOR
SET QUOTED_IDENTIFIER ON
SET NOCOUNT OFF
GO
========================================================
2.建立sqlcmd(sqlcmd用法請參考:使用 sqlcmd 執行 Transact-SQL 指令碼檔案 )的command檔(比如我存成RunDBBackup.cmd,設定要執行的script file 及 輸出的檔名),如下,
sqlcmd -i d:\backup.sql -o E:\DB_Backup\result.txt