2016-02-03 126 views
0

我試圖腳本恢復我們的數據庫之一,我需要知道正確的語法使用與文件,並與移動命令SQL腳本還原使用隨動 - 隨着文件和隨着

到目前爲止,我有:

RESTORE DATABASE Test 
    FROM DISK = 'E:\Test_db_BASELINE.BAK' 
    WITH FILE = 1 
    WITH MOVE 'Test_dat' TO 'C:\MSSQL\v2_Data\Test_Data.MDF', 
     MOVE 'Test_log' TO 'C:\MSSQL\v2_Data\Test_Log.LDF', REPLACE 

我得到的語法錯誤任何想法?

投入方面我想執行以下自動恢復,其中BAK文件有一個時間戳的命名約定:

 --==CHECK IF DB EXISTS IF IT DOES DROP IT 

USE [master] 
IF EXISTS(SELECT * FROM sys.databases where name='SlotLookup') 
DROP DATABASE [SlotLookup] 


--==START THE RESTORE PROCESS 
DECLARE @FileName varchar(255), @PathToBackup varchar(255), @RestoreFilePath varchar(1000) 

DECLARE @Files TABLE (subdirectory varchar(255), depth int, [file] int) 

SET NOCOUNT ON 

--==SET THE FILEPATH 
SET @PathToBackup = 'path' 

--insert into our memory table using dirtree and a single file level 
INSERT INTO @Files 
EXEC master.dbo.xp_DirTree @PathToBackup,1,1 

SELECT TOP 1 
    @FileName = [subdirectory] 
FROM 
    @Files 
WHERE 
    -- get where it is a file 
    [file] = 1 
AND 
--==FIND THE LOGICAL NAME OF THE BAK FILE FROM THE CHRONILOGICALLY ORDERED LIST 
    subdirectory LIKE '%.bak' 
ORDER BY 
    -- order descending so newest file will be first by naming convention 
    subdirectory DESC 

IF LEFT(REVERSE(@PathToBackup), 1) != '\' 
BEGIN 
    SET @PathToBackup = @PathToBackup + '\' 
END 

SET @RestoreFilePath = @PathToBackup + @FileName 

SELECT @RestoreFilePath 

--===BEGIN THE RESTORE TO THE DESIGNATED SERVER 
RESTORE DATABASE [SlotLookup] 
FROM DISK = @RestoreFilePath 
FILE = 1 
WITH MOVE 'SlotLookup' TO 'path\SlotLookup.mdf', 
MOVE 'SlotLookup_log' TO 'path\SlotLookup_log.ldf' 

獲取語法錯誤 消息156,級別15,狀態1,行48 關鍵字'FILE'附近的語法錯誤。 消息319,15級,狀態1,49

+0

什麼是錯誤信息? –

+0

錯誤消息是:獲取語法錯誤消息156,級別15,狀態1,行48關鍵字'文件'附近的語法不正確。 Msg 319,Level 15,State 1,Line 49 – jimmy8ball

回答

0

行與招還原備份腳本的語法是這樣的以下內容:

RESTORE DATABASE [AdventureWorksCopy] FROM DISK = 'c:\mssql\backup\[...]\Backup.bak' 
WITH CHECKSUM, 
MOVE 'AdventureWorks_Data' TO 'c:\mssql\data\[...]\AdventureWorksCopy_Data.mdf', 
MOVE 'AdventureWorks_Log' TO 'c:\mssql\log\[...]\AdventureWorksCopy_Log.ldf', 
RECOVERY, REPLACE, STATS = 10; 

你什麼語法錯誤? 請將其包含在問題中