CentOS环境下SQL Server最佳实践
sudo yum install -y wget openssl11-devel libaio libcurl libxml2-devel bzip2-devel libjpeg-turbo-devel freetype-devel libpng-devel安装SQL Server所需的依赖库,避免安装过程中报错。mssql-release.repo,CentOS 8对应调整路径),并导入GPG密钥(sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc),确保软件包来源可信。sudo yum install -y mssql-server msodbcsql17 unixodbc-devel),覆盖数据库引擎、ODBC驱动等基础组件。sudo /opt/mssql/bin/mssql-conf setup,按提示设置SA账户强密码(包含大小写字母、数字、特殊字符,长度≥8位),并选择版本(如Developer版用于开发测试,Enterprise版用于生产)。sudo systemctl start mssql-server启动SQL Server服务,sudo systemctl enable mssql-server设置开机自启,确保服务持久运行。sqlcmd修改端口(示例:sudo sqlcmd -S localhost -U sa -Q "sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'tcp port', 1434; RECONFIGURE;"),随后重启服务使配置生效。sudo sqlcmd -S localhost -U sa -Q "sp_addlogin 'ANONYMOUS', 'ANONYMOUS_PASSWORD', 'MSSQLSERVER'; sp_droplogin 'ANONYMOUS';"彻底删除匿名账户。firewall-cmd开放SQL Server端口(sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent,随后sudo firewall-cmd --reload);禁用SELinux(若无需强制访问控制,编辑/etc/selinux/config设置SELINUX=disabled)或调整其策略,避免拦截SQL Server进程。EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'max server memory (MB)', 16000; RECONFIGURE;限制SQL Server最大内存使用(预留10%-20%内存给操作系统及其他进程),避免内存耗尽导致系统崩溃。mount -o noatime,nodiratime挂载选项减少文件元数据操作。SELECT *(仅查询所需列),减少数据传输量;为高频查询的列创建索引(如主键、外键、WHERE条件列),避免全表扫描;定期通过UPDATE STATISTICS更新统计信息,帮助查询优化器生成更优的执行计划;使用EXPLAIN分析慢查询,识别并优化性能瓶颈(如缺少索引、嵌套子查询过多)。BACKUP DATABASE [数据库名] TO DISK = '/path/to/backup.bak'命令或SSMS执行备份。RESTORE VERIFYONLY FROM DISK = '/path/to/backup.bak'命令检查备份完整性),确保在灾难发生时能成功恢复数据。perfmon)监控关键指标(如CPU使用率、内存使用率、磁盘I/O、锁等待时间);通过动态管理视图(DMVs)如sys.dm_exec_requests(查看当前执行查询)、sys.dm_os_wait_stats(查看等待类型)分析性能瓶颈。ALTER INDEX ALL ON [表名] REBUILD)或重组(ALTER INDEX ALL ON [表名] REORGANIZE),减少索引碎片;每月更新统计信息(UPDATE STATISTICS [表名]),确保查询优化器做出准确决策;清理无用日志(如事务日志)和临时文件,释放磁盘空间。