如何在SQL Server 2016 Express LocalDb中创建FileTable?
嘿,我来帮你搞定这个问题!因为SQL Server LocalDB是轻量级的实例,确实没有图形化的SQL Server配置管理器——这也是它精简特性的一部分,所以咱们得用T-SQL脚本来一步步配置FILESTREAM并创建FileTable,具体步骤如下:
在SQL Server 2016 LocalDB中创建FileTable的完整步骤
1. 连接到你的LocalDB实例
首先打开SQL Server Management Studio(或者Visual Studio自带的SQL Server Object Explorer),连接到你的LocalDB实例。随VS2017安装的2016 LocalDB,默认实例名一般是(LocalDB)\MSSQLLocalDB,也可能是(LocalDB)\v13.0,你可以尝试这两个连接字符串。
2. 启用FILESTREAM全局配置
LocalDB没法通过图形界面配置FILESTREAM,所以直接执行以下T-SQL脚本开启高级配置并设置FILESTREAM访问级别:
-- 启用高级配置选项 sp_configure 'show advanced options', 1; RECONFIGURE; -- 设置FILESTREAM访问级别为完全访问(3表示允许文件I/O和T-SQL双重访问) sp_configure 'filestream access level', 3; RECONFIGURE;
执行完成后,需要重启LocalDB实例让配置生效。打开命令提示符(CMD),运行以下命令(替换成你的实例名):
sqllocaldb stop MSSQLLocalDB sqllocaldb start MSSQLLocalDB
3. 配置目标数据库的FILESTREAM选项
接下来要给目标数据库开启FILESTREAM支持,分两种情况处理:
情况1:新建带FILESTREAM支持的数据库
CREATE DATABASE FileTableDB ON PRIMARY ( NAME = FileTableDB_Primary, FILENAME = 'C:\YourCustomPath\FileTableDB.mdf' -- 替换成你自己的本地路径 ), FILEGROUP FileTableFG CONTAINS FILESTREAM ( NAME = FileTableDB_FS, FILENAME = 'C:\YourCustomPath\FileTableDB_FS' -- 这个目录不用提前创建,SQL会自动生成 ) LOG ON ( NAME = FileTableDB_Log, FILENAME = 'C:\YourCustomPath\FileTableDB.ldf' -- 替换成你自己的本地路径 ) WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'FileTableRoot' );
情况2:给现有数据库添加FILESTREAM支持
-- 先启用非事务访问并指定根目录 ALTER DATABASE YourExistingDBName SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'YourRootDirectory' ); -- 如果数据库没有FILESTREAM文件组,先添加 ALTER DATABASE YourExistingDBName ADD FILEGROUP FileTableFG CONTAINS FILESTREAM; -- 给文件组添加存储文件 ALTER DATABASE YourExistingDBName ADD FILE ( NAME = YourDB_FS, FILENAME = 'C:\YourCustomPath\YourDB_FS' ) TO FILEGROUP FileTableFG;
4. 创建FileTable
现在一切准备就绪,直接创建FileTable:
USE FileTableDB; -- 切换到你的目标数据库 GO CREATE TABLE DocumentStore AS FileTable WITH ( FileTable_Directory = 'UserDocuments', -- 这个是FileTable对应的子目录名 FileTable_Collate_Filename = database_default );
创建完成后,你可以在数据库的FileTables节点下看到它,也能通过文件系统访问——路径格式一般是\\localhost\MSSQLSERVER\v13.0\FileTableDB\FileTableRoot\UserDocuments(根据你的实例名、数据库名调整)。
额外注意点
- 确保你有指定路径的读写权限,LocalDB默认以当前用户身份运行,所以路径要选当前用户有权限的目录。
- 如果遇到权限报错,检查LocalDB实例的运行账户(一般是当前登录用户)是否有目标路径的读写权限。
内容的提问来源于stack exchange,提问作者Ali Fathi
相关产品推荐
相关产品推荐

