2017-05-24 38 views
-1

我是新來的sql,我試圖做一個查詢我的備份,但我得到一些錯誤,我有20個或更多的數據庫,但我的查詢doesn 「對所有的DB,它的每一個DB相同的查詢將不起作用,它顯示一條消息:查詢備份

查詢:

USE [DB Name]; 
GO 
BACKUP DATABASE DB Name 
TO DISK = 'E:\xxxx\xx\DB Name.Bak' 
    ;WITH FORMAT 
     MEDIANAME = 'DB Name_SQLServerBackups', 
     NAME = 'Full Backup DB Name' 

是給錯誤消息:

消息102,級別15,狀態1,69行 「DB名稱」附近的語法不正確。

我在做什麼錯?非常感謝您的幫助。

+0

你可以發佈數據庫名稱列表,哪些可以工作,哪些不可以? – gms0ulman

+0

@carlos ortiz請檢查我的帖子 –

回答

1

你最好開始的地方是與Ola Hallengren放在一起的腳本,它們非常全面,涵蓋了你所需要的一切。

+0

謝謝!生病檢查他們馬上......謝謝! –

+2

我不會建議進入Ola的腳本,尤其是如果你還沒有掌握基礎知識的話。另外,我認爲太多人依賴於其他人的工作,比如Ola的劇本。我會研究基礎知識,然後編寫自己的腳本,以完成你需要他們做的事情。 – user7593937

0

試試這個:

USE master 
BACKUP DATABASE [AdventureWorks2012] 
TO DISK = N'D:\Backup\AdventureWorks2012.bak' 
WITH COPY_ONLY, NOFORMAT, 
NOINIT, 
NAME = N'AdventureWorks2012-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 
GO 

--SPlit backup Process 

USE master 
BACKUP DATABASE [AdventureWorks2012] 
TO DISK = N'D:\Backup\AdventureWorks2012_1.bak' 
,DISK = N'D:\Backup\AdventureWorks2012_2.bak' 
,DISK = N'D:\Backup\AdventureWorks2012_3.bak' 
,DISK = N'D:\Backup\AdventureWorks2012_4.bak' 
WITH COPY_ONLY, NOFORMAT, 
NOINIT, 
NAME = N'AdventureWorks2012-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 
GO 
2

嘗試使用第二[DB Name]圍繞支架也和做一些語法修正你的命令:

USE [DB Name]; 
GO 

BACKUP DATABASE [DB Name] 
TO DISK = 'E:\xxxx\xx\DB Name.Bak' 
    WITH FORMAT 
    , MEDIANAME = 'DB Name_SQLServerBackups' 
    , NAME = 'Full Backup DB Name'; 

(這個工作對我來說)

+0

感謝您的信息!生病讓你張貼它是如何去的! –

+0

它工作了!!!!!真棒!!!!謝謝你的幫助! –

0

這是一個簡單的腳本,可以備份服務器上的所有數據庫。我會仔細研究這一點,並確切地知道它在做什麼。這是一個很好的起點,但我會努力創建自己的腳本,最適合你的腳本。遊標允許您遍歷所有數據庫,而STATIC可確保在查詢sys.databases時捕獲所有數據庫。

/* Full database backup for all user databases. */ 

DECLARE @dbname varchar (300) 
DECLARE @filepath varchar (1000) 
DECLARE @filedate varchar (20) 
DECLARE @filename varchar (256) 
DECLARE @subdir varchar (1000) 

SET @filepath = 'C:\TestBackup\' --This is your backup directory 
SET @filedate = REPLACE(GETDATE(), ':', '_') --CONVERT(VARCHAR(10),GETDATE(),112) --gets the date and timestamp, replaces : with an underscore 

DECLARE backup_cursor CURSOR STATIC FORWARD_ONLY FOR 
SELECT [name] 
FROM master.sys.databases sd 
-- WHERE ... exclude databases 

OPEN backup_cursor 
FETCH NEXT FROM backup_cursor INTO @dbname 
WHILE @@FETCH_STATUS = 0 
BEGIN 

SET @subdir = 'C:\Backup\' + @dbname 
EXEC master.dbo.xp_create_subdir @subdir 

     SET @fileName = @filepath + @dbname + '\' + @dbname + '_' + @fileDate + '.bak' 
     BACKUP DATABASE @dbname TO DISK = @fileName 
     WITH CHECKSUM, STOP_ON_ERROR 
     RESTORE VERIFYONLY FROM DISK = @fileName 
     WITH STOP_ON_ERROR 

     FETCH NEXT FROM backup_cursor INTO @dbname 

END 
CLOSE backup_cursor 
DEALLOCATE backup_cursor 
0

這是一個簡單的數據庫備份腳本,我一直在使用。

DECLARE @dbName  VARCHAR(100) 
DECLARE @path   VARCHAR(200) 
DECLARE @fileName  VARCHAR(200) 

SET @path = 'C:\Database Backups\' 

DECLARE db_cursor CURSOR FOR 
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name IN ('DB1','DB2','DB3','DB4') 

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @dbName 

WHILE @@FETCH_STATUS = 0 
BEGIN 
     SET @fileName = @path + @dbName + '.bak' 
     BACKUP DATABASE @dbName TO DISK = @fileName WITH INIT, SKIP 
     FETCH NEXT FROM db_cursor INTO @dbName 
END 
CLOSE db_cursor 
DEALLOCATE db_cursor