CentOS 上 SQL Server 日志查看路径与方式
一、常见日志类型与默认路径
- 错误日志 Error Log(SQL Server 实例启动、错误与告警):默认路径为 /var/log/mssql/errorlog。用于排查实例无法启动、登录失败、配置加载等问题。
- 系统服务日志(systemd):通过 journalctl -u mssql-server 查看,包含服务启动/停止、崩溃重启、systemd 级别的事件。
- 事务日志 Transaction Log(数据库级别,.ldf):默认位于 /var/opt/mssql/data/,每个数据库对应一个以 .ldf 结尾的文件,用于崩溃恢复与回滚。
- 安装目录说明:SQL Server on Linux 的默认根目录为 /var/opt/mssql/,数据与日志通常位于其下的 data 子目录。
二、查看方法
- 查看错误日志文件
- 直接查看当前错误日志:less /var/log/mssql/errorlog
- 实时跟踪最新内容:tail -f /var/log/mssql/errorlog
- 查看服务日志(systemd)
- 查看全部:journalctl -u mssql-server
- 实时跟踪:journalctl -u mssql-server -f
- 查看最近一次启动日志:journalctl -u mssql-server -b
- 在 SQL Server 内读取错误日志
- 查看全部:EXEC xp_readerrorlog 0, 1
- 按关键字过滤(如“Login failed”):EXEC xp_readerrorlog 0, 1, N’Login failed’
- 轮转错误日志(归档当前并新建):EXEC sp_cycle_errorlog
- 查看数据库事务日志文件位置
- 查询指定库(如 TestDB)的日志文件路径:
SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID(‘TestDB’) AND type = 1;
- 若需确认默认数据目录,可检查:SELECT SERVERPROPERTY(‘InstanceDefaultDataPath’);
三、Docker 场景
- 错误日志仍在容器内:/var/log/mssql/errorlog。进入容器查看:
- docker exec -it <容器名> bash
- less /var/log/mssql/errorlog
- 若需持久化日志,启动容器时将宿主机的日志目录挂载到容器内相同路径,例如:
- docker run … -v /host/log/mssql:/var/log/mssql …
四、快速排查建议
- 先确认服务状态:systemctl status mssql-server;若异常,用 journalctl -u mssql-server 查看启动失败原因。
- 再查看错误日志:tail -n 200 /var/log/mssql/errorlog 或 xp_readerrorlog 定位最近报错。
- 若问题与某库相关,进一步确认该库的事务日志文件位置与空间使用,并结合日志备份策略进行维护。