发布:2024/7/6 16:18:31作者:管理员 来源:本站 浏览次数:417
本文目录
1、背景
2、启用FILESTREAM功能
2.1、启用SQL Server服务中的文件流支持
2.2、配制数据库来支持文件流存储
2.3、定义支持文件流存储的列
3、禁用FILESTREAM功能
4、参考文档
2016-03-08 17:56 整理,未发布
返回顶部
1、背景
从别处拿来一备份文件
restore headeronly from DISK = N'E:\AdventureWorks2008_F_20161109.bak'
restore filelistonly from DISK = N'E:\AdventureWorks2008_F_20161109.bak'
还原数据库
复制代码
--还原数据库
RESTORE DATABASE [AdventureWorks2008New] FROM DISK = N'E:\AdventureWorks2008_F_20161109.bak' WITH FILE = 1
, MOVE N'AdventureWorks2008_Data' TO N'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\AdventureWorks2008New_Data.mdf'
, MOVE N'AdventureWorks2008_Log' TO N'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\AdventureWorks2008New_Log.ldf'
, MOVE N'AdventureWorks2008_Fs' TO N'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\AdventureWorks2008New_Fs'
, NOUNLOAD,REPLACE,STATS = 10
GO
复制代码
错误信息是说FILESTREAM 功能被禁用。
返回顶部
2、启用FILESTREAM功能
文件流特性通过将二进制大字段数据存储在本地文件系统中,从而将Windows新技术文件系统(NTFS)和SQL Server数据库引擎集成在一起。你可以使用Transact-SQL语句来查询、插入或更新数据,或者使用Win32文件系统界面来直接访问数据。
2.1、启用SQL Server服务中的文件流支持
Step1、SQL Server配制管理器->服务属性->文件流->勾选[针对Transact-SQL访问启用文件流]
Step2、设置文件流访问级别
复制代码
USE master
GO
EXEC sp_configure filestream_access_level, 2 --同时支持T-SQL和Win32流访问
GO
RECONFIGURE
GO
--查看value
SELECT * FROM sys.sysconfigures s WHERE comment LIKE '%filestream%'
复制代码
请按步骤1->步骤2的顺序操作,如果按步骤2->步骤1,在还原时会提示FILESTREAM 功能被禁用,此时需要再次执行步骤2语句。
单独只操作步骤1或步骤2还原会提示FILESTREAM 功能被禁用。
复制代码
--再次还原数据库,成功还原
RESTORE DATABASE [AdventureWorks2008New] FROM DISK = N'E:\AdventureWorks2008_F_20161109.bak' WITH FILE = 1
, MOVE N'AdventureWorks2008_Data' TO N'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\AdventureWorks2008New_Data.mdf'
, MOVE N'AdventureWorks2008_Log' TO N'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\AdventureWorks2008New_Log.ldf'
, MOVE N'AdventureWorks2008_Fs' TO N'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\AdventureWorks2008New_Fs'
, NOUNLOAD,REPLACE,STATS = 10
GO
复制代码
2.2、配制数据库来支持文件流存储
这里我针对示例数据库添加一个文件流,确保你已启用FILESTREAM功能
复制代码
--添加文件流文件组、文件
USE [master]
GO
ALTER DATABASE [AdventureWorks2008] ADD FILEGROUP [FileStreamGrp] CONTAINS FILESTREAM
GO
ALTER DATABASE [AdventureWorks2008] ADD FILE ( NAME = N'AdventureWorks2008_Fs', FILENAME = N'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\AdventureWorks2008_Fs' ) TO FILEGROUP [FileStreamGrp]
GO
复制代码
此时数据库已包含一个文件流,备份数据库
--备份数据库
BACKUP DATABASE [AdventureWorks2008] TO DISK = N'E:\AdventureWorks2008_F_20161109.bak'
WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2008-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10
GO
你已经有了一个备份文件,那么就可以回到文章的开始了。。。
当然,你也可以创建一个全新的带文件流的数据库
复制代码
USE master
GO
IF EXISTS(SELECT name FROM sys.databases WHERE name = 'HumanResources')
DROP DATABASE HumanResources
GO
CREATE DATABASE HumanResources
ON
PRIMARY(
NAME = HumanRscsDat,
FILENAME = 'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\HumanRscsDat.mdf'),
FILEGROUP FileStreamGrp CONTAINS FILESTREAM(
NAME = HumanRscsFs,
FILENAME = 'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\HumanRscsFs')
LOG ON(
NAME = HumanRscsLog,
FILENAME = 'D:\SQL08R2\MSSQL10_50.SQL08R2\MSSQL\DATA\HumanRscsLof.ldf')
复制代码
2.3、定义支持文件流存储的列
要使一张表包含一个文件流列,它必须也要包含一个ROWGUIDCOL关键字,且此关键字需要配制为非空和唯一约束。这个文件流列对于支持Win32文件流访问来说是必须的。此文件流列本身必须配制为varbinary(max)类型,并包含FILESTREAM关键字,如下边的建表语句:
复制代码
USE HumanResources
GO
IF OBJECT_ID ( N'Candidate', N'U') IS NOT NULL
DROP TABLE dbo.Candidate
GO
CREATE TABLE Candidate(
CandidateId INT IDENTITY PRIMARY KEY,
CandidateGuid UNIQUEIDENTIFIER ROWGUIDCOL
NOT NULL UNIQUE DEFAULT NEWID(),
CandidateResume VARBINARY(MAX) FILESTREAM NULL
)
复制代码
返回顶部
3、禁用FILESTREAM功能
复制代码
USE master
GO
EXEC sp_configure filestream_access_level, 0
GO
RECONFIGURE
GO
复制代码
SQL Server配制管理器->服务属性->文件流->去掉[针对Transact-SQL访问启用文件流]
禁用FILESTREAM功能,必须重启数据库服务才能生效!
复制代码
--Clear
--AdventureWorks2008
USE [AdventureWorks2008]
GO
ALTER DATABASE [AdventureWorks2008] REMOVE FILE [AdventureWorks2008_Fs]
GO
ALTER DATABASE [AdventureWorks2008] REMOVE FILEGROUP [FileStreamGrp]
GO
--HumanResources
DROP DATABASE HumanResources
--AdventureWorks2008New
DROP DATABASE [AdventureWorks2008New]
复制代码
提醒:如果在FILESTREAM功能启用后,执行上面的语句会删除对应的文件流文件夹。如果在FILESTREAM功能禁用,且重启数据库服务生效后,删除HumanResources库,则不会删除对应的文件流文件夹。在下次使用相关的文件夹时会报错
ALTER DATABASE [test3]
ADD FILEGROUP [DataFiles] CONTAINS FILESTREAM
GO
ALTER DATABASE [test3]
ADD FILE ( NAME = [test3_Fs], FILENAME = 'E:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\DATAFILE' )
TO FILEGROUP [DataFiles]
GO
sql2014 开启FILESTREAM 功能
为了在SQL Server 2014中启用FILESTREAM功能,您需要执行以下步骤:
以下是相应的SQL命令,用于启用FILESTREAM:
EXEC sp_configure 'filestream_access_level', 2
RECONFIGURE
这里的sp_configure存储过程用于设置FILESTREAM的访问级别,而RECONFIGURE语句用于更新配置。
请注意,启用FILESTREAM可能需要重新启动服务器。此外,确保在执行这些步骤之前您具有适当的权限,并且已经根据您的系统配置了必要的硬件和软件先决条件。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4