我已经在本地数据库上尝试了 MSSQL(2008R2 数据中心)的 FILESTREAM 功能来进行实验。真正的数据库运行在服务器上。我已经使用以下查询设置了整个 FILESTREAM:
/* CREATE FILESTREAM AND FILESTREAM TABLE */
USE [master]
GO
ALTER DATABASE SenONew
ADD FILEGROUP [FileStream]
CONTAINS FILESTREAM
GO
ALTER DATABASE SenONew
ADD FILE
(
NAME = 'fsSenONew',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SenONew.ndf'
)
TO FILEGROUP [FileStream]
GO
USE [SenONew]
GO
CREATE TABLE Filestore(
FileID int PRIMARY KEY,
RowID uniqueidentifier ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWSEQUENTIALID(),
FileDescr nvarchar(max),
FileIndex varbinary(max) FILESTREAM NULL)
GO
我正在尝试添加一些文件然后删除它们。
现在,既然这只是一个实验,我也想摆脱它。我正在使用本地服务器来开发将在真实服务器上使用的数据库,因此我在本地服务器上创建备份,然后在真实服务器上恢复它,以便它得到更新(软件正在开发中,因此数据库结构和数据都发生了很大的变化,我需要对正在测试软件的真实服务器进行完整恢复)。
经过几个小时的搜索,我找不到任何关于我的问题的信息。
我明白我需要:
- 删除存储FILESTREAM信息的数据库表
- 我需要删除 FILESTREAM 的 FILE
- 删除文件组
所以我使用这个查询来删除我首先设置的所有内容:
/* DROP FILESTREAM TABLE AND FILEGROUP */
USE SenONew
DROP TABLE Filestore
GO
ALTER DATABASE SenONew
REMOVE FILE fsSenONew
ALTER DATABASE SenONew
REMOVE FILEGROUP [FileStream]
GO
所以我做了我应该做的一切,而且也顺利完成。因此,当我输入我的文件组、文件和文件位置时,我看到它们都已完全删除:
但是,当我对本地数据库(包括已删除的文件流、文件路径和文件组)进行备份并尝试用它恢复服务器时,出现错误。
创建备份的 SQL:
/* CREATE BACKUP OF DATABASE WITHIN CURRECT CONNECTION */
DECLARE @FileName2 nvarchar(250)
SELECT @FileName2 = (SELECT 'C:\SenO BackUp\' + convert(nvarchar(200),GetDate(),112) + ' SenONew.BAK')
BACKUP DATABASE SenONew TO DISK=@FileName2
GO
然后在服务器上进行恢复:
/* CREATE RESTORE OF DATABASE WITHIN REAL SERVER CONNECTION */
use master
alter database SenONew set offline with rollback immediate;
DECLARE @FileName2 nvarchar(250)
SELECT @FileName2 = (SELECT '' + convert(nvarchar(200),GetDate(),112) + ' SenONew.BAK')
RESTORE DATABASE SenONew
FROM DISK = @FileName2
alter database SenONew set online with rollback immediate;
我收到以下错误:
*(消息 5121,级别 16,状态 2,第 7 行
“C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SenONew.ndf”指定的路径不在有效目录中。
消息 3156,级别 16,状态 3,第 7 行文件“fsSenONew”无法恢复到“C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SenONew.ndf”。使用WITH MOVE 来标识文件的有效位置。
消息 3119,级别 16,状态 1,第 7 行 在规划 RESTORE 语句时发现了问题。之前的消息提供了详细信息。
消息 3013,级别 16,状态 1,第 7 行 RESTORE DATABASE 异常终止。 )*
我删除了.ndf FILESTREAM位置,为什么它是指定路径?另外,为什么 fsSenONew 试图恢复?我无法理解它。是否有我需要删除的内部路径?