Вам необходимо определить отдельную переменную для хранения имени файловой группы Filestream.
String fileStreamFGPhysicalPath = dataFilePath + databaseName;
string fileStreamFGLogicalName;
string dbLogicalName;
string logLogicalName;
Вам необходимо провести l oop через таблицу данных для определения логического имени файлового потока. Вы можете идентифицировать это, используя колонку FileType.
DataTable dtFileList = dbRestore.ReadFileList(sqlServer);
Foreach(DataRow dr in dtFileList)
{
switch (dr["Type"])
{
case "D":
dbLogicalName = dr["LogicalName"].ToString();
break;
case "L":
logLogicalName = dr["LogicalName"].ToString();
break;
case "S":
fileStreamFGLogicalName= dr["LogicalName"].ToString();
break;
}
}
Теперь определите также файл перемещения для файлового потока.
dbRestore.RelocateFiles.Add(new RelocateFile(dbLogicalName, dataFileLocation));
dbRestore.RelocateFiles.Add(new RelocateFile(logLogicalName + "_log", logFileLocation));
dbRestore.RelocateFiles.Add(new RelocateFile(fileStreamFGLogicalName , fileStreamFGPhysicalPath ));
Примечание: Я рассмотрел только три файла: данные, журнал, файловый поток. У вас может быть несколько файлов данных. Таким образом, вам нужно сделать имена файлов данных массивами и соответственно переместить их в Relocatefiles.