我对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脚本.我已经做了BACKUP部分,但我在RESTORE上苦苦挣扎.
当我在SS Management Studio上运行以下语句时;
EXEC('RESTORE FILELISTONLY FROM DISK = ''C:\backup.bak''')
Run Code Online (Sandbox Code Playgroud)
我在网格中得到了一个结果集,我也可以使用
INSERT INTO <temp_table>
EXEC('RESTORE FILELISTONLY FROM DISK = ''C:\backup.bak''')
Run Code Online (Sandbox Code Playgroud)
填充临时表.但是,当我尝试从该结果集中进行选择时,我会收到语法错误.例如
SELECT * FROM
EXEC('RESTORE FILELISTONLY FROM DISK = ''C:\backup.bak''')
Run Code Online (Sandbox Code Playgroud)
结果集元数据应存储在SQL Server Dictionary中的某处.我找到了其他的创可贴公式来让我的自动恢复工作,但是如果能够获得结果集,我会创建更优雅的解决方案.另请注意,结果集在2008年与2005年不同.
提前致谢...
我正在尝试编写一个自动恢复数据库备份的脚本.我知道我可以使用以下RESTORE命令:
RESTORE DATABASE [DBRestoredName]
FROM DISK = N'C:\path\to\backup.bak'
WITH FILE = 1,
MOVE N'DBNAME' TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\DBNAME.mdf',
MOVE N'DBNAME_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\DBNAME.ldf',
NOUNLOAD
Run Code Online (Sandbox Code Playgroud)
这个问题是我希望能够在运行时确定SQL服务器的数据位置(即TO路径),以便将恢复的数据库与此服务器上的其他数据库一致地放置.
正在恢复的服务器上将不存在要恢复的数据库,并且我需要MOVE语句,因为源服务器很可能是SQL Server 2005,目标是2008,因此备份文件中包含的文件路径是不可取的.
那么我可以通过哪种方式以编程方式确定SQL数据位置?
我使用的是SQL Server 2008 R2,我有一个备份文件,B:\backups\full_backup.bak但我不知道这个文件有什么备份或者每个文件有哪些文件.如何编写查询以从此备份文件还原数据库?
我试图恢复数据库,但它引发了一个错误说
消息3156,级别16,状态4,行1
文件'Application_Primary'无法还原到'D:\ Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Application_Primary.mdf'.使用WITH MOVE标识文件的有效位置.消息3156,级别16,状态4,行1
文件'Application_FTS'无法还原到'D:\ Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Application_FTS.mdf'.使用WITH MOVE标识文件的有效位置.消息3156,级别16,状态4,行1
文件'Application_Log'无法还原到'L:\ Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Application_Log.ldf'.使用WITH MOVE标识文件的有效位置.消息3119,级别16,状态1,行1
在规划RESTORE语句时确定了问题.以前的消息提供详情.消息3013,级别16,状态1,行1
RESTORE DATABASE异常终止.
码:
restore database Application_db
From disk = 'B:\backups\full_backup.bak'
Run Code Online (Sandbox Code Playgroud)