Sql server 如何通过脚本仅恢复数据和日志文件,而忽略其他文件

Sql server 如何通过脚本仅恢复数据和日志文件,而忽略其他文件,sql-server,sqlcmd,Sql Server,Sqlcmd,我非常懒惰,所以我花了数小时编写一个批处理文件,以处理将数据库恢复到sql server的问题,并在这之后对其进行一系列更改 不同的人向我发送我正在使用的数据库 我只需要数据库和事务日志,跳过任何其他文件。目前,以下内容适用于我拥有的大多数数据库 这部分是批量生产的 SQLCMD -S %SName% -U %UName% -P %Pwd% -v varDBName=%DBName% varDBPath=%1 varSQLLogPath=%SQLLogPath% varSQLDataPath=%

我非常懒惰,所以我花了数小时编写一个批处理文件,以处理将数据库恢复到sql server的问题,并在这之后对其进行一系列更改

不同的人向我发送我正在使用的数据库

我只需要数据库和事务日志,跳过任何其他文件。目前,以下内容适用于我拥有的大多数数据库

这部分是批量生产的

SQLCMD -S %SName% -U %UName% -P %Pwd% -v varDBName=%DBName% varDBPath=%1 varSQLLogPath=%SQLLogPath% varSQLDataPath=%SQLDataPath% -i "%RunningPath%\RestoreScript.sql" -o "%RunningPath%\Restore_Log.txt"
这是我正在调用的还原脚本

RESTORE DATABASE [$(varDBName)] FROM DISK = N'$(varDBPath)' WITH FILE = 1, MOVE N'MQ1CS_Data' TO N'$(varSQLDataPath)\$(varDBName).MDF', MOVE N'MQ1CS_Log' TO N'$(varSQLLogPath)\$(varDBName).LDF',  NOUNLOAD, REPLACE, STATS = 10
我刚才遇到的问题是,我试图恢复的数据库有第三个文件,叫做sysFT_OpenIssuesFT。我猜这个文件名的变化取决于DBA如何设置它。有没有办法只恢复上述两个文件?如果没有第三个全文文件,数据库会工作吗


如何编写SQL脚本,以便只恢复数据和日志文件,而不恢复其他文件?

每个数据库可以有多个数据文件甚至日志文件。但是,即使只有1个数据和1个日志文件,每个数据库的文件逻辑名称仍然可能不同

您可以使用以下代码从备份文件中检索所有文件:

CREATE TABLE #filelist
(
    LogicalName NVARCHAR(128),
    PhysicalName NVARCHAR(260),
    Type CHAR(1),
    FileGroupName NVARCHAR(128),
    Size NUMERIC(20,0),
    MaxSize NUMERIC(20,0),
    FileId TINYINT,
    CreateLSN NUMERIC(25,0),
    DropLSN NUMERIC(25, 0),
    UniqueID uniqueidentifier,
    ReadOnlyLSN NUMERIC(25,0),
    ReadWriteLSN NUMERIC(25,0),
    BackupSizeInBytes BIGINT,
    SourceBlockSize INT,
    FileGroupId INT,
    LogGroupGUID UNIQUEIDENTIFIER,
    DifferentialBaseLSN NUMERIC(25,0),
    DifferentialBaseGUID UNIQUEIDENTIFIER,
    IsReadOnly BIT,
    IsPresent BIT,
    TDEThumbprint VARBINARY(32)
);

INSERT INTO #filelist
    EXEC('RESTORE FILELISTONLY  FROM  DISK = N''$(varDBPath)''');

SELECT * FROM #filelist;

DROP TABLE #filelist;

使用临时表#文件列表中可用的文件名,您应该能够创建正确的还原语句。

是的,这是可能的,但我们不希望这样,因为您会丢失全文搜索目录。我不需要全文搜索目录。我只是在寻找数据本身的某些问题,而目录对我来说并不重要。我如何告诉SQL只还原某些文件?