我对SQL Server命令不太熟悉.
我需要一个脚本来从.bak文件恢复数据库,并将logical_data和logical_log文件移动到特定路径.
我可以:
restore filelistonly from disk='D:\backups\my_backup.bak'
Run Code Online (Sandbox Code Playgroud)
这将给我一个带有列的结果集LogicalName,接下来我需要使用restore命令中结果集中的逻辑名称:
restore database my_db_name from disk='d:\backups\my_backups.bak' with file=1,
move 'logical_data_file' to 'd:\data\mydb.mdf',
move 'logical_log_file' to 'd:\data\mylog.ldf'
Run Code Online (Sandbox Code Playgroud)
如何将第一个结果集中的逻辑名称捕获到可以提供给"move"命令的变量中?
我认为解决方案可能很简单,但我对SQL Server很新.
我需要以编程方式(T-SQL)还原SQL Server 2008中的数据库备份.此备份来自不同的服务器,原始数据库名称也可能不同.(实际上,我将数据库从某个服务器复制到另一台服务器上的新数据库.)
显然,我必须使用RESTORE DATABASE ... WITH MOVE,哪个有效,但我需要知道应该将文件恢复到哪里以及如何命名它们.尽管搜索,我还没有找到最基本的任务:只使用默认路径和文件名,即执行SQL Server时执行的任何操作CREATE DATABASE- 您不必指定路径命令,为什么需要一个RESTORE?
我是否忽略了一些简单的解决方案,或者我是否真的必须列出文件,以某种方式从SQL Server配置中找到数据库目录,并使用该信息构建RESTORE命令?谢谢.
(与PostgreSQL相比,使用pg_restore时,你指定一个已经创建的目标数据库;当你创建它时,你有选择 - 不是强制性的 - 指定一个非默认的表空间,但是如果你没有,那么你只是不关心文件的物理存储位置.)