SQL(window)日志在linux 下查看

SQL server(window)日志在linux 下查看

服务器拷贝下来的日志比较大,window 无法直接查看

bash 复制代码
# 查看文件大小
ll  -h
-rw-r--r-- 1 root root 364M  9月  3 11:22 ERRORLOG

# 查看文件类型
file ERRORLOG

ERRORLOG: Little-endian UTF-16 Unicode text, with very long lines, with CRLF line terminators

使用 file 命令查看了一个名为 ERRORLOG 的文件,输出是:

复制代码
ERRORLOG: Little-endian UTF-16 Unicode text, with very long lines, with CRLF line terminators

这说明这个文件是一个 UTF-16 LE(小端)编码的 Unicode 文本文件,常见于 Windows 系统生成的日志(如 SQL Server 的错误日志、IIS 日志等)。


❗ 问题:为什么 catless 显示乱码?

因为 Linux 默认工具(如 cat, less)通常假设文本是 UTF-8 编码 ,而你的文件是 UTF-16,所以直接打开会显示乱码或类似:

复制代码
M Sep   ...

✅ 正确查看方式

你需要将 UTF-16 转换为 UTF-8 或使用支持 Unicode 的工具来查看。


✅ 方法 1:使用 iconv 转换编码(推荐)

bash 复制代码
iconv -f UTF-16LE -t UTF-8 ERRORLOG | less -R
🔍 参数说明:
  • -f UTF-16LE:输入编码是 UTF-16 Little Endian
  • -t UTF-8:输出转换为 UTF-8
  • | less -R:通过 less 查看,支持颜色和控制字符

💡 如果你知道文件很大,也可以分页查看:

bash 复制代码
iconv -f UTF-16LE -t UTF-8 ERRORLOG | tail -n 100 | less

✅ 方法 2:使用 strings 快速提取可读文本

bash 复制代码
strings -e l ERRORLOG | less
🔍 参数说明:
  • -e l:指定使用 16-bit little-endian 编码(即 UTF-16LE)
  • 这会提取所有可打印字符串,适合快速查看日志内容

✅ 优点:速度快,适合大文件

❌ 缺点:会丢失格式(如换行可能不完整)


✅ 方法 3:使用 moreless(部分支持,不推荐)

某些版本的 less 支持 Unicode,但需要设置环境变量:

bash 复制代码
# 设置语言环境为 UTF-8
export LC_ALL=C.UTF-8
less ERRORLOG

但效果不稳定,仍可能乱码 ,建议优先用 iconv


✅ 方法 4:保存为 UTF-8 文件供后续分析

bash 复制代码
iconv -f UTF-16LE -t UTF-8 ERRORLOG -o ERRORLOG.utf8

ll -h 
-rw-r--r-- 1 root root 364M  9月  3 11:22 ERRORLOG
-rw-r--r-- 1 root root 197M  9月  3 13:24 ERRORLOG.utf8

然后就可以用任何工具查看:

bash 复制代码
less ERRORLOG.utf8
grep "Error" ERRORLOG.utf8

✅ 方法 5:如果是 SQL Server 错误日志(常见场景)

Windows SQL Server 的 ERRORLOG 文件就是这种格式。你可以:

  1. 用上述 iconv 方法转换。

  2. 或直接在 Windows 上用记事本、Notepad++ 打开最方便。

  3. 或使用 PowerShell 转换:

    powershell 复制代码
    Get-Content ERRORLOG | Out-File -Encoding UTF8 ERRORLOG_utf8.txt

🧰 补充:如何确认文件编码?

bash 复制代码
file --mime-encoding ERRORLOG

输出可能是:

复制代码
ERRORLOG: utf-16le

这可以确认编码类型。


✅ 总结:推荐操作流程

bash 复制代码
# 1. 先确认编码
file --mime-encoding ERRORLOG

# 2. 转换并查看(推荐)
iconv -f UTF-16LE -t UTF-8 ERRORLOG | less -R

# 3. 或提取可读字符串
strings -e l ERRORLOG | grep -i error | less
相关推荐
Gauss松鼠会21 小时前
【GaussDB】GaussDB重要通信参数汇总
服务器·网络·数据库·sql·性能优化·gaussdb·经验总结
IvorySQL21 小时前
PostgreSQL 技术日报 (6月9日)|PL/SQL 迁移自动化,前沿峰会即将启幕
sql·postgresql·自动化
凡人叶枫21 小时前
Effective C++ 条款07:为多态基类声明 virtual 析构函数
linux·c语言·开发语言·c++
睡不醒男孩03082321 小时前
第五篇:2026年企业级 PostgreSQL 高可用方案深度横评:Patroni vs. CLup 架构与可靠性全面对决
数据库·postgresql·架构
NineData21 小时前
SQL 都在等锁时,ChatDBA 先帮 MySQL 找到谁在挡路
数据库·人工智能·sql·mysql·安全·数据复制·数据迁移工具
超级无敌zhq21 小时前
后渗透痕迹清理:攻防对抗中的隐身术
网络·数据库·网络安全
凡人叶枫21 小时前
Effective C++ 条款10:令 operator= 返回一个 reference to *this
java·linux·服务器·开发语言·c++·effective c++
2601_961845151 天前
考研网课资源网盘|2027|资料
数据库·vim·sublime text·figma·photoshop·墨刀·高考
|_⊙1 天前
Linux 中断
linux
caimouse1 天前
Reactos 第 5 章 进程与线程 — 5.11 线程本地存储 TLS
c语言·windows