使用2012,我正在尝试创建本地数据库的副本。我找到了一些解决方案的变体。其中之一-备份和恢复数据库作为新的- 这里。
当前使用名称Rewards2_bak
创建数据库备份。此文件位置的副本在系统目录C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\
中
下一步-创建将数据库还原为现有数据库副本的查询
GO
use master
RESTORE FILELISTONLY
FROM Rewards2_bak
RESTORE DATABASE Rewards2_Copy
FROM Rewards2_bak
WITH RECOVERY,
MOVE 'Rewards2_data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Rewards2_copy.mdf',
MOVE 'Rewards2_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Rewards2_log_copy.ldf'
GO
有错误,我没有备份设备Rewads2_backup
。我明白,在这种情况下,我可以使用文件,也可以使用文件位置?想想什么东西少了..。
要创建备份,请使用next查询(全部确定)
USE Rewards2;
GO
BACKUP DATABASE Rewards2
TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Rewards2_bak.bak'
WITH FORMAT,
MEDIANAME = 'SQLServerBackups',
NAME = 'Full Backup of Rewards2';
GO
还尝试在Server 2012 Task --> Backup
和Task --> Restore
中使用工具,但got错误--无法创建备份。(启动具有管理员权限的程序)
这是我如何配置还原复制的屏幕。
但是我有错误,不能覆盖数据库文件Rewards2
。这是一个问题--如果我给数据库Rewards2
添加新的名称,它为什么要覆盖Rewards2_copy
。还是我理解错了什么?
Shure,这是几种可能的数据库复制的变体,但是真正需要找到这个解决方案的问题。我犯了错误/忘记了或不明白的地方。
发布于 2014-05-18 03:03:48
从备份还原数据库时,它将使用与原始数据库相同的文件名。您需要在还原期间更改这些文件名。
在“还原”窗口中,转到Files
选项卡。在这个窗口上有一个名为Restore As
的列。更改列Restore中路径末尾的文件名,与您看到的每个文件相同。
发布于 2014-05-18 03:07:20
我认为您正在尝试覆盖数据库中的逻辑文件名,尝试一下copy...guessing,但是尝试一下--如果您现在不需要编写脚本,请在SSMS中尝试它:
记住,在第三点中,要更改options选项卡中的逻辑文件名,否则您将尝试覆盖Rewards2文件。
周围有很多指南:
通过SQL确定可以使用的逻辑文件名: filelistonly
restore filelistonly from disk='enter backup file path here'
然后使用所报告的文件名来生成还原查询,因为您已经尝试过了。
发布于 2018-03-07 14:31:03
下面是VBS脚本,它将备份DB并将其还原到另一台服务器。它假设每个服务器都有“备份”文件共享。脚本可以从任何位置运行。
sFrom = "\\server1\Backup"
sTo = "\\server2\Backup"
Set fso = CreateObject("Scripting.FileSystemObject")
CopyDb "Db1"
CopyDb "Db2"
MsgBox "Done!"
Sub CopyDb(sDB)
If fso.FileExists(sFrom & "\" & sDB & ".bak") Then
fso.DeleteFile sFrom & "\" & sDB & ".bak"
End If
ExecuteSql "server1", "BACKUP DATABASE " & sDB & " TO DISK = '" & sFrom & "\" & sDB & ".bak'"
fso.CopyFile sFrom & "\" & sDB & ".bak", sTo & "\" & sDB & ".bak"
ExecuteSql "server2", "ALTER DATABASE " & sDB & " SET SINGLE_USER WITH ROLLBACK IMMEDIATE"
ExecuteSql "server2", "RESTORE DATABASE " & sDB & " FROM DISK = N'" & sTo & "\" & sDB & ".bak'"
ExecuteSql "server2", "EXEC " & sDB & ".dbo.sp_change_users_login 'Update_One', 'user1', 'user1'"
End Sub
Sub ExecuteSql(sServer, sSql)
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=" & sServer
cn.Execute sSql
cn.Close
End Sub
https://stackoverflow.com/questions/23721062
复制