You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows Docker容器中启用SQL Server 2022的FILESTREAM?

在Docker Windows容器中启用SQL Server 2022 FILESTREAM的正确步骤

一、先验证SQL实例的FILESTREAM配置(T-SQL)

首先确认SQL层面的配置是否生效,执行以下T-SQL:

EXEC sp_configure 'filestream_access_level';
RECONFIGURE;

若run_value不是2(本地完全访问)或3(允许远程访问),执行以下命令修改:

EXEC sp_configure 'filestream_access_level', 2; -- 按需选2或3
RECONFIGURE;

二、容器内通过PowerShell配置Windows级FILESTREAM

SQL Server Configuration Manager本质是修改注册表,在Server Core容器中直接操作注册表:

  1. 执行PowerShell命令修改注册表项(默认实例):
# 设置FILESTREAM启用级别,2为本地访问,3为远程访问
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\Filestream" -Name "EnableLevel" -Value 2
# 设置FILESTREAM共享名,默认是MSSQLSERVER
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\Filestream" -Name "ShareName" -Value "MSSQLSERVER"

注意:如果是命名实例,需将路径中的MSSQL16.MSSQLSERVER替换为实例对应的注册表路径(比如MSSQL16.YOUR_INSTANCE_NAME),可通过Get-ChildItem HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server查看所有实例路径。

  1. 重启SQL Server服务使配置生效:
# 默认实例服务名
Restart-Service -Name MSSQLSERVER
# 命名实例服务名格式为MSSQL$YOUR_INSTANCE_NAME
# Restart-Service -Name MSSQL$YOUR_INSTANCE_NAME

三、容器启动时预先配置FILESTREAM(可选)

如果是新建容器,可在启动时直接完成配置,避免重复操作:

Dockerfile方式

FROM mcr.microsoft.com/windows/servercore:ltsc2019
# 此处添加SQL Server 2022 Developer版的安装步骤(参考官方文档)
# 配置FILESTREAM并重启服务
RUN powershell -Command \
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\Filestream" -Name "EnableLevel" -Value 2; \
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\Filestream" -Name "ShareName" -Value "MSSQLSERVER"; \
    Restart-Service -Name MSSQLSERVER

docker run命令方式

docker run -d -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrongPassword123" `
    --name sql2022-filestream `
    mcr.microsoft.com/mssql/server:2022-latest-windows `
    powershell -Command "Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\Filestream' -Name 'EnableLevel' -Value 2; Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\Filestream' -Name 'ShareName' -Value 'MSSQLSERVER'; Restart-Service -Name MSSQLSERVER"

四、验证FILESTREAM是否启用成功

  1. 再次执行T-SQL确认配置:
EXEC sp_configure 'filestream_access_level';

确保run_value为2或3。

  1. 检查Windows共享是否存在:
Get-SmbShare | Where-Object Name -eq "MSSQLSERVER"

应能看到对应的共享条目。

  1. 创建测试表验证功能:
CREATE DATABASE TestFilestream;
GO
USE TestFilestream;
GO
CREATE TABLE TestFS (
    ID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
    FileData VARBINARY(MAX) FILESTREAM NULL
);
GO

若能成功创建表,说明FILESTREAM已正常启用。

常见排查点

  • 注册表路径错误:确认实例对应的注册表路径,避免默认实例和命名实例混淆。
  • 服务未重启:修改注册表后必须重启SQL Server服务,否则配置不会生效。
  • 权限问题:确保容器运行账号有修改注册表和重启服务的权限,官方SQL Server容器默认账号具备该权限。

内容的提问来源于stack exchange,提问作者user23665455

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 13:10:18