从脚本恢复数据库
Restoring database from script
我创建了一个小脚本来从备份中恢复数据库。一旦脚本 运行 它显示
RESTORE DATABASE successfully processed 28818 pages in 1.568 seconds
(143.584 MB/sec).
我有更多代码来更改数据库、更改一些视图和 sp,但我收到以下错误;用户没有更改数据库的权限'GreyGoo'、数据库不存在或数据库未处于允许访问检查的状态。
我也注意到我在对象资源管理器中看不到数据库
这是我用来从备份恢复数据库的方法
- 如果数据库存在则设置为单个用户
- 如果数据库存在则删除数据库
- 运行 下面的脚本
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;
- 将数据库设置为多用户和其他属性
问题是什么,我该如何解决,我目前正在 SQL Server 2008
上测试我的代码
谢谢
在恢复过程中,您需要确保
- 登录/权限正确。
- 如果以前的同名数据库不存在,则将其删除。也许来自之前的尝试
- 您也可以像下面那样关闭恢复选项,恢复是默认设置
- 仅恢复文件列表
示例 -- 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
我创建了一个小脚本来从备份中恢复数据库。一旦脚本 运行 它显示
RESTORE DATABASE successfully processed 28818 pages in 1.568 seconds (143.584 MB/sec).
我有更多代码来更改数据库、更改一些视图和 sp,但我收到以下错误;用户没有更改数据库的权限'GreyGoo'、数据库不存在或数据库未处于允许访问检查的状态。
我也注意到我在对象资源管理器中看不到数据库
这是我用来从备份恢复数据库的方法
- 如果数据库存在则设置为单个用户
- 如果数据库存在则删除数据库
- 运行 下面的脚本
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;
- 将数据库设置为多用户和其他属性
问题是什么,我该如何解决,我目前正在 SQL Server 2008
上测试我的代码谢谢
在恢复过程中,您需要确保
- 登录/权限正确。
- 如果以前的同名数据库不存在,则将其删除。也许来自之前的尝试
- 您也可以像下面那样关闭恢复选项,恢复是默认设置
- 仅恢复文件列表
示例 -- 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