2017-05-24 3 views
-1

私はsqlを初めて使用していますが、バックアップのクエリを実行しようとしていますが、いくつかの行にエラーが発生しています。データベースが20以上ありますが、すべてのDB、各DBのためにその同じクエリに」トンの仕事、それはメッセージを表示:バックアップのクエリ

クエリ:

メッセージ102、レベル:

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' 

は、エラーメッセージを与えているが15、状態1、行69 'DB名'の近くの構文が正しくありません。

私は間違っていますか?本当に助けに感謝します。

+0

DB名のリストを投稿できますか?DB名のリストは投稿できますか? – 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 
関連する問題