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 [表名]
),确保查询优化器做出准确决策;清理无用日志(如事务日志)和临时文件,释放磁盘空间。