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

Kubuntu 19.10下Azure Data Studio创建数据库遇Msg 5123错误求解决方案

解决Azure Data Studio在Kubuntu 19.10上创建数据库时的Msg 5123错误

嘿,这个问题我在Linux环境下用SQL Server时碰到过好多次,本质是文件路径或权限问题,和你用Kubuntu系统确实有关系,我给你一步步拆解解决办法:

错误原因分析

Msg 5123搭配操作系统错误2,核心是SQL Server尝试创建数据库文件时,找不到指定的目录,或者没有权限写入该目录。SQL Server在Linux(包括Kubuntu)上的默认数据文件路径和Windows完全不同,默认是/var/opt/mssql/data/,如果你的代码没指定路径,SQL Server会尝试用这个默认目录,但如果目录不存在、权限配置不对,就会触发这个报错。

解决方案一:手动指定文件路径创建数据库

最直接的办法是在CREATE DATABASE语句里明确指定文件到SQL Server有权限的目录,修改你的代码如下:

-- 连接到master数据库
USE master
GO

-- 检查数据库是否存在,不存在则创建
IF NOT EXISTS ( SELECT [name] FROM sys.databases WHERE [name] = N'DATA_1' )
CREATE DATABASE DATA_1
ON PRIMARY 
( 
    NAME = DATA_1_Data,
    FILENAME = '/var/opt/mssql/data/DATA_1.mdf', -- 指定Linux下的默认数据目录
    SIZE = 8MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 64MB 
)
LOG ON
( 
    NAME = DATA_1_Log,
    FILENAME = '/var/opt/mssql/data/DATA_1.ldf', -- 日志文件同样指定到该目录
    SIZE = 8MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 64MB 
)
GO

明确指定文件路径后,SQL Server就能找到正确的位置创建文件了。

解决方案二:修复默认目录的权限(如果想用默认路径创建)

如果你不想每次都手动指定路径,可以检查并修复默认数据目录的权限:

  1. 打开Kubuntu的终端,先查看默认目录的权限:
ls -ld /var/opt/mssql/data/

正常情况下,输出应该显示所有者是mssql:mssql,权限为drwxr-xr-x(755)。

  1. 如果权限不对,执行以下命令修改:
# 递归修改目录所有者为mssql用户
sudo chown -R mssql:mssql /var/opt/mssql/data/
# 递归设置目录权限
sudo chmod -R 755 /var/opt/mssql/data/
  1. 最后重启SQL Server服务,让权限变更生效:
sudo systemctl restart mssql-server

完成后,你原来的代码应该就能正常运行了。

为什么Kubuntu系统会相关?

SQL Server在Linux和Windows上的文件系统、权限模型差异很大:Windows上默认路径是C:\Program Files\Microsoft SQL Server\...,而Linux(包括Kubuntu)用的是/var/opt/mssql/data/,而且Linux对文件权限的管控更严格,如果mssql用户没有目录的读写权限,就会出现“找不到文件”的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 06:39:10