Sql server 是否有一个简单的脚本来;“复制/克隆”;同一服务器上的SQL Server数据库?

Sql server 是否有一个简单的脚本来;“复制/克隆”;同一服务器上的SQL Server数据库?,sql-server,tsql,ssms,Sql Server,Tsql,Ssms,我正在寻找一种方法,使同一台SQL Server上每天的数据库副本自动化 例如,我有一个数据库MyDB。我想每天在同一台服务器上进行MyDB_测试中复制一份MyDB 有没有简单的脚本来完成这个“简单”的任务 我发现这个脚本: backup database OriginalDB to disk = 'D:\backup\OriginalDB_full.bak' with init, stats =10; restore database new_db_name from disk = 'D:\

我正在寻找一种方法,使同一台SQL Server上每天的数据库副本自动化

例如,我有一个数据库
MyDB
。我想每天在同一台服务器上进行
MyDB_测试
中复制一份
MyDB

有没有简单的脚本来完成这个“简单”的任务

我发现这个脚本:

backup database OriginalDB
to disk = 'D:\backup\OriginalDB_full.bak'
with init, stats =10;

restore database new_db_name
from disk = 'D:\backup\OriginalDB_full.bak'
with stats =10, recovery,
move 'logical_Data_file' to 'D:\data\new_db_name.mdf',
move 'logical_log_file' to 'L:\log\new_db_name_log.ldf'
但我不明白在“逻辑数据文件”和“逻辑日志文件”中替换什么

这是一个移动,我想要一个我的数据库副本…为什么这两个最新的行是“移动”

我想我误解了这个脚本…有人能帮我吗

编辑:

我只是这样编辑我的代码:

backup database MY_DB
to disk = 'D:\BACKUP\MY_DB.bak'
with init, stats =10;

restore database MY_DB_NEW
from disk = 'D:\BACKUP\MY_DB.bak'
with stats =10, recovery,
move 'D:\Microsoft SQL Server\MSSQL12.SQLDIVALTO\MSSQL\DATA\MY_DB.mdf' to 'D:\Microsoft SQL Server\MSSQL12.SQLDIVALTO\MSSQL\DATA\MY_DB_new.mdf',
move 'D:\Microsoft SQL Server\MSSQL12.SQLDIVALTO\MSSQL\DATA\MY_DB_log.mdf' to 'D:\Microsoft SQL Server\MSSQL12.SQLDIVALTO\MSSQL\DATA\MY_DB_new_log.ldf'
不幸的是,我得到一个错误,告诉逻辑文件“MY_DB.mdf”不是MY_DB_新数据库的一部分…使用RESTORE FILELISTONLY获取逻辑文件名


我不明白我在这个脚本中的错误在哪里,有什么输入吗?

当你
还原一个数据库时,除非你另外指定它将创建与以前相同的文件;相同的名字,相同的路径。由于您需要一份副本,这将覆盖现有副本。这显然会失败,因为原始数据库正在使用这些文件

因此,您需要告诉实例将数据库文件(“移动”它们)放到不同的路径,因此使用
move
子句。这意味着两个数据库不会因为试图使用或写入彼此的文件而发生冲突


不过,这类事情通常会暗示一个问题,尽管这是一个不同的问题。

更正:

我没有输入逻辑文件名,而是输入文件名。
只需输入逻辑文件名而不包含路径

这里的“移动”只是指“使用我为文件指定的其他位置/名称,而不是备份中存储的位置/名称”,这是必要的,因为原始位置已被原始数据库占用。文件实际上没有移动,只是在其他地方还原。您使用的是物理文件名。这个错误谈论逻辑文件名是有原因的,甚至可以告诉您使用什么语句来发现这些文件名。@Jeroenmoster是的,就是这样!谢谢:)非常感谢你的解释,我编辑了我的代码(和编辑了我的问题),但很遗憾我收到了一条关于我的逻辑文件名的错误消息:(我在原始帖子中写的,但我只是找到了它…逻辑文件名没有路径!这是答案吗?还是问题的附加信息?