从脚本恢复数据库

Restoring database from script

我创建了一个小脚本来从备份中恢复数据库。一旦脚本 运行 它显示

RESTORE DATABASE successfully processed 28818 pages in 1.568 seconds (143.584 MB/sec).

我有更多代码来更改数据库、更改一些视图和 sp,但我收到以下错误;用户没有更改数据库的权限'GreyGoo'、数据库不存在或数据库未处于允许访问检查的状态。

我也注意到我在对象资源管理器中看不到数据库

这是我用来从备份恢复数据库的方法

  1. 如果数据库存在则设置为单个用户
  2. 如果数据库存在则删除数据库
  3. 运行 下面的脚本
RESTORE DATABASE GreyGoo FROM DISK = 'C:\Bkp\GreyGoo_backup_2020_03_02_180002_5403592.bak'
WITH 
MOVE 'GreyGoo' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\GreyGoo.mdf',
MOVE 'GreyGoo_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\GreyGoo.ldf', 
REPLACE;
  1. 将数据库设置为多用户和其他属性

问题是什么,我该如何解决,我目前正在 SQL Server 2008

上测试我的代码

谢谢

在恢复过程中,您需要确保

  1. 登录/权限正确。
  2. 如果以前的同名数据库不存在,则将其删除。也许来自之前的尝试
  3. 您也可以像下面那样关闭恢复选项,恢复是默认设置
  4. 仅恢复文件列表

示例 -- MSDN

USE master;  
GO  
-- First determine the number and names of the files in the backup.  
-- AdventureWorks2012_Backup is the name of the backup device.  
RESTORE FILELISTONLY  
   FROM AdventureWorks2012_Backup;  
-- Restore the files for MyAdvWorks.  
RESTORE DATABASE MyAdvWorks  
   FROM AdventureWorks2012_Backup  
   WITH RECOVERY,  
   MOVE 'AdventureWorks2012_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',   
   MOVE 'AdventureWorks2012_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';  
GO  
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'MYDB'
GO
USE [master]
GO
/* Database [MYDB]  */
DROP DATABASE [MYDB]
GO

USE [master]
RESTORE DATABASE [MYDB] FROM  DISK = N'E:\FTP\local_MYDB_01.bak' WITH  FILE = 1,  MOVE N'blank' TO N'E:\DBs19\MYDB.mdf',  MOVE N'blank_log' TO N'E:\DBs19\MYDB.ldf',  NOUNLOAD,  STATS = 5
GO