创建指向 SAN 的文件系统组
Posted
技术标签:
【中文标题】创建指向 SAN 的文件系统组【英文标题】:create a file system group pointing at a SAN 【发布时间】:2013-05-18 15:13:39 【问题描述】:我正在使用在 sql server 2012 中创建 FileTable。我想将文件存储在 SAN(存储区域网络)上。我已将其映射到 sql server 上的驱动器。
要使用 FileTable,我需要设置一个文件系统组。我正在使用以下脚本,但未能正确:
ALTER DATABASE [MyDatabase]
ADD FILE
(
NAME = FileStreamFile,
FILENAME= '\\123.456.789.001\MyFolder',
MAXSIZE = UNLIMITED
)
TO FileGroup MyFileStreamGroup
END
我为 FileName 输入的条目似乎总是失败。如何设置 FileStreamGroup 以指向 SAN,然后我将使用它来创建文件表?
【问题讨论】:
【参考方案1】:正如您所发现的,您不能使用 UNC 路径将文件流文件放到远程驱动器上。最好的办法是在 SAN 上创建一个 LUN 并通过 iSCSI 连接到该 LUN,这样驱动器将显示为 SQL Server 的本地驱动器,但物理上仍位于 SAN 上。
您可能想与您的存储管理员讨论一下如何真正做到这一点。
【讨论】:
【参考方案2】:首先,你需要创建一个文件组:
ALTER DATABASE [MyDatabase]
ADD FILEGROUP [MyFileStreamGroup]
然后你就可以往里面添加文件了:
ALTER DATABASE [MyDatabase]
ADD FILE (
NAME = N'NewDataFile'
,FILENAME = N'\\123.456.789.001\MyFolder\NewDataFile.mdf'
,SIZE = 1024KB
,FILEGROWTH = 1024KB
) TO FILEGROUP [MyFileStreamGroup]
最后你可以创建表格了:
CREATE TABLE [MyDatabase].[dbo].[NewTable] (
[Id] int NOT NULL,
[Text] varchar(50) NOT NULL
) ON [MyFileStreamGroup]
通过指定ON [MyFileStreamGroup]
,您可以强制在该文件组中创建它,而该文件组又将使用 SAN 上新创建的文件。如果您不指定 filegrop,则该表将以默认值结束,通常称为 PRIMARY。如果你希望新的文件组是默认的,你可以使用:
ALTER DATABASE [MyDatabase]
MODIFY FILEGROUP [MyFileStreamGroup] DEFAULT
【讨论】:
当我尝试“路径 '\\123.456.789.001\MyFolder\NewDataFile.mdf' 不能用于 FILESTREAM 文件时出现此错误。有关支持的路径的信息,请参阅 SQL Server 联机丛书.2 哦,我忘了将 CONTAINS FILESTREAM 添加到 ADD FILEGROUP。你是对的,我得到同样的错误。似乎不可能在远程路径上拥有文件流数据文件。我发现了这个:sqlskills.com/blogs/paul/…,上面写着“数据库的 FILESTREAM 数据容器必须放在本地连接存储上的 NTFS 卷上”。以上是关于创建指向 SAN 的文件系统组的主要内容,如果未能解决你的问题,请参考以下文章
分析SAN LUN Mapping出错导致文件系统共享冲突的情况
SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功