Việc sử dụng T-SQL để đảm nhiệm các nhiệm vụ lặp đi lặp lại như sao lưu tất cả các cơ sở dữ liệu trên máy chủ. Bạn có thể sử dụng SQL Server Management Studio để sao lưu cơ sở dữ liệu hoặc thậm chí sử dụng Maintenance Plan, nhưng sử dụng T-SQL là cách tiếp cận đơn giản và nhanh hơn nhiều.
Với việc sử dụng T-SQL, bạn có thể tạo các lệnh sao lưu và sử dụng con trỏ, bạn có thể trỏ qua tất cả các cơ sở dữ liệu để sao lưu từng cái một.
Cách sao lưu tất cả cơ sở dữ liệu SQL Server
- Tạo đường dẫn để lưu trữ bản sao lưu cơ sở dữ liệu
- Sử dụng định dạng tên tệp sao lưu
- Chọn danh sách cơ sở dữ liệu để sao lưu
- Lặp qua cơ sở dữ liệu
- Lập trình tạo lệnh sao lưu cơ sở dữ liệu bằng cách sử dụng tên cơ sở dữ liệu, đường dẫn và định dạng tên tệp
- Xem tập lệnh sao lưu SQL Server
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
-- specify database backup directory
SET @path = 'C:\Backup\'
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR READ_ONLY FOR
SELECT name
FROM master.sys.databases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
AND state = 0 -- database is online
AND is_in_standby = 0 -- database is not read only for log shipping
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Nếu bạn không thích tên tệp tin tạo mà muốn tên như thế này: DBname_YYYYDDMM_HHMMSS.BAK
Tìm
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
Và thay thế thành
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')