簡體   English   中英

通過SQL腳本還原/等待還原完成

[英]Restore by SQL-Script / wait for restore to finish

在用於還原數據庫的腳本中,我遇到了另一個問題。 恢復數據庫后,我想編輯它的一些表。 因此,在執行通用還原查詢后:

RESTORE DATABASE @DBname
FROM DISK = @BackupFileLocation
GO

我要編輯提到的表格。 問題是我需要在還原之前使用一些變量來編輯表,這些變量是我在還原之前聲明的(我需要它們在那里)。 而且似乎GO會重置所有變量,因此以后我將無法使用它們。 但是,如果我在沒有GO情況下嘗試使用它,它將跳過恢復查詢並說我要編輯的數據庫不存在。


我的問題:還有另一種方法等待還原完成,直到它繼續編輯表?

這是一種方法:設置一個臨時表(#table,而不是@variable),用您的值填充它,然后將變量設置為這些值。 例如:

--  This will drop the temp table if it already exists.
--  Essential for repetitive testing!
IF object_id('tempdb.dbo.#Foo') is not null
    DROP TABLE #Foo
GO

CREATE TABLE #Foo
 (
   DBName              varchar(100)   not null
  ,BackupFileLocation  varchar(1000)  not null
 )

INSERT #Foo values ('MyDatabase', 'C:\SQL_Backups\SampleDBs')

DECLARE
  @DBname              varchar(100)
 ,@BackupFileLocation  varchar(1000)

SELECT
   @DBname             = DBName
  ,@BackupFileLocation = BackupFileLocation
 from #Foo


PRINT '--  Before restore  --------------------'
PRINT @DBname
PRINT @BackupFileLocation


--  Note: I did not test this statement
RESTORE DATABASE @DBname
 FROM DISK = @BackupFileLocation

GO

DECLARE
  @DBname              varchar(100)
 ,@BackupFileLocation  varchar(1000)

SELECT
   @DBname             = DBName
  ,@BackupFileLocation = BackupFileLocation
 from #Foo

PRINT ''
PRINT '--  After restore  --------------------'
PRINT @DBname
PRINT @BackupFileLocation

GO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM