首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过SQL-脚本/等待还原完成

问通过SQL-脚本/等待还原完成
EN

Stack Overflow用户
提问于 2017-08-04 09:33:04
回答 1查看 1.1K关注 0票数 0

在还原数据库的脚本中,我遇到了另一个问题。还原数据库后,我想编辑其中的一些表。因此,在常见的还原查询之后:

代码语言:javascript
复制
RESTORE DATABASE @DBname
FROM DISK = @BackupFileLocation
GO

我想编辑上面提到的表格。问题是,在恢复之后,我需要使用一些变量来编辑表,在恢复之前声明这些变量(我需要它们)。似乎GO会重置所有的变量,所以以后我不能使用它们。但是,如果我尝试不使用GO,它会跳过还原查询,并说我想编辑的数据库不存在。

我的问题是:是否有其他方法等待还原完成,直到它继续编辑表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-07 14:23:16

有一种方法:设置一个临时表(# table,而不是@variable),用值填充它,然后将变量设置为这些值。例如:

代码语言:javascript
复制
--  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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45503223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档