首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有硬编码数据路径的情况下恢复到新数据库?

如何在没有硬编码数据路径的情况下恢复到新数据库?
EN

Database Administration用户
提问于 2018-03-08 17:05:07
回答 1查看 644关注 0票数 -1

我可以通过执行备份来创建数据库的副本:

代码语言:javascript
复制
BACKUP DATABASE olddbname TO DISK='olddbname.bak' WITH INIT;

然后做一个恢复:

代码语言:javascript
复制
RESTORE DATABASE newdbname FROM DISK='olddbname.bak' WITH REPLACE;

但是,这将尝试用与olddbname已经使用的文件名相同的文件名来恢复.mdf和.ldf。

解决方案是使用MOVE选项重命名文件:

代码语言:javascript
复制
RESTORE DATABASE newdbname FROM DISK='olddbname.bak' WITH 
    REPLACE,
    MOVE 'olddbname' TO 'X:\DATA\newdbname.mdf',
    MOVE 'olddbname_log' TO 'X:\DATA\newdbname_log.ldf'

我讨厌那样。

如果我创建一个新的数据库:

代码语言:javascript
复制
CREATE DATABASE newdbname

如果不指定不同的内容,它将在默认位置创建.mdf和.ldf。

如何使还原在相同的默认位置创建.mdf和.ldf文件?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-03-08 19:08:33

下载丁香醇 Powershell库并使用恢复数据库 cmdlet。

下面的示例将get-item的输出(指向从数据库zzz的备份创建的备份文件)输送到Restore-DbaDatabase。我使用-useDestinationDefaultDirectories开关强制还原的文件进入目标实例默认目录。我使用-DatabaseName参数将还原的数据库重命名为googly

代码语言:javascript
复制
get-item "C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\zzz.bak" |
Restore-DbaDatabase -SqlInstance . -useDestinationDefaultDirectories -DatabaseName googly
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/199738

复制
相关文章

相似问题

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