【发布时间】:2012-04-17 18:14:00
【问题描述】:
大家下午好-
我进行了相当多的搜索,发现了一些关于如何动态确定包含在 SQL .bak 文件中的逻辑数据文件名的好资源。我使用的 SMO 方法要求我传递 ServerName,但是我的要求要求将实际文件路径传递给备份。我可以在 T-SQL 中得到我需要的东西,但我真的很想确定一种利用 SMO 的方法。下面是 T-SQL,它为我提供了我需要的信息:
RESTORE FILELISTONLY
FROM N'C:\Directory\File.bak'
WITH FILE = 1
不幸的是,SqlRestore.ReadFileList(ServerName) 将不起作用,因为备份集尚未恢复到服务器。本质上我需要这些信息,所以我可以将它传递给Restore.RelocateFiles.Add。我实际上是一名刚刚涉足 C# 的 DBA,所以如果您需要更多信息,请告诉我,我会尽力填补空白。感谢您的帮助!
【问题讨论】:
-
我没有读到 SqlRestore.ReadFileList 需要将备份集恢复到服务器 (msdn.microsoft.com/en-us/library/…)。我认为它只需要引用一个服务器实例,以便让 SQL 引擎可以从备份文件中读取备份集文件列表。调用该方法时会发生什么?您是否收到某种错误消息?
-
在您提供的链接中,它显示了从服务器级别读取的备份集,我需要能够传递一个备份设备(到 bak 的路径)才能读取文件名,以便我将它们传递给 Restore.Relocate。