TMN*_*ear 5 sql-server filestream
我在本地数据库上尝试了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
Run Code Online (Sandbox Code Playgroud)
我正在尝试添加一些文件,然后删除它们.
既然这只是一个实验,我也想摆脱它.我正在使用我的本地服务器来开发将在真实服务器上使用的数据库,因此我在我的本地服务器上创建BackUp然后在真实服务器上恢复它,以便更新(软件正在开发中,所以数据库结构和数据的变化很大,我需要对正在测试软件的真实服务器进行完全恢复.
经过几个小时的搜索,我找不到任何问题.
我明白我需要:
所以我正在使用此查询来摆脱我首先设置的所有内容:
/* DROP FILESTREAM TABLE AND FILEGROUP */
USE SenONew
DROP TABLE Filestore
GO
ALTER DATABASE SenONew
REMOVE FILE fsSenONew
ALTER DATABASE SenONew
REMOVE FILEGROUP [FileStream]
GO
Run Code Online (Sandbox Code Playgroud)
所以我尽我所能,并且完成没有错误.因此,当我输入文件组,文件和文件位置时,我发现它们都被完全删除了:

但是当我对我的本地数据库(包括已删除的FILESTREAM,文件路径和文件组)进行备份并尝试使用它恢复服务器时,我会收到错误.
SQL创建一个BACKUP:
/* 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
Run Code Online (Sandbox Code Playgroud)

然后在服务器上执行还原:
/* 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;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:

*(Msg 5121,Level 16,State 2,Line 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语句时确定了问题.以前的消息提供详情.
Msg 3013,Level 16,State 1,Line 7 RESTORE DATABASE正在异常终止.)*
我删除了.ndf FILESTREAM位置,为什么它是指定的路径?另外,为什么fsSenONew试图恢复?我无法理解它.我需要删除内部路径吗?
你可以查看:
SELECT * FROM SenONew.sys.data_spaces WHERE name = 'FileStream'
Run Code Online (Sandbox Code Playgroud)
它应该返回0行.
有一个从SQL Server 2008数据库中删除FILESTREAM功能的过程:
ALTER TABLE Filestore DROP column FileIndex
GO
ALTER TABLE Filestore SET (FILESTREAM_ON="NULL")
GO
ALTER Database SenONew REMOVE FILE fsSenONew
GO
ALTER Database SenONew REMOVE FILEGROUP [FileStream]
GO
Run Code Online (Sandbox Code Playgroud)
如本文所述.但你所做的步骤应该做同样的事情.
你的问题肯定很奇怪,但我建议你尝试使用以下内容
USE SenONew
EXEC Sp_help
EXEC Sp_helpfile
EXEC Sp_helpfilegroup
Run Code Online (Sandbox Code Playgroud)
您可能会发现一些可疑的东西,就像使用该FILEGROUP的另一个表一样.
我已完成您描述的步骤,无法重现您的问题.检查还原数据库屏幕的外观.

| 归档时间: |
|
| 查看次数: |
11982 次 |
| 最近记录: |