[英]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.