【问题标题】:create a file system group pointing at a SAN创建指向 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,然后我将使用它来创建文件表?

【问题讨论】:

    标签: sql-server sql-server-2012 san filetable


    【解决方案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 卷上”。
      猜你喜欢
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2013-08-09
      • 1970-01-01
      相关资源
      最近更新 更多