安装SQL Server 2019设兼容级别的Ansible角色及参数咨询
Ansible配置SQL Server 2019向后兼容属性的实现方案
SQL Server安装程序本身没有提供可直接设置向后兼容属性的命令行安装标识,兼容属性配置可在安装完成后通过Ansible官方内置模块自动化完成,无需依赖第三方专用角色,完全可以嵌入现有CI/CD流水线执行。
- 核心实现模块
采用Ansible官方集合自带的community.general.mssql_script模块即可完成配置,该模块支持直接在目标SQL Server实例上执行T-SQL语句,适配Windows、Linux版本的SQL Server 2019部署场景。 - 流水线配置示例
在SQL Server安装完成的任务节点后,追加以下任务即可完成向后兼容级别设置:
- name: 配置数据库兼容级别适配SQL Server 2012 community.general.mssql_script: login_user: "{{ sql_admin_account }}" login_password: "{{ sql_admin_password }}" script: | -- 单库配置:将业务库兼容级别设置为SQL Server 2012对应值110 ALTER DATABASE [BusinessDB] SET COMPATIBILITY_LEVEL = 110; -- 批量配置:将所有用户库统一设置为110兼容级别 EXEC sp_MSforeachdb 'IF ''?'' NOT IN (''master'',''model'',''msdb'',''tempdb'') ALTER DATABASE [?] SET COMPATIBILITY_LEVEL = 110;'
- 配置注意事项
- 兼容级别对应数值不要混淆:SQL Server 2012对应兼容级别值为110,SQL Server 2019默认值为150,设置为110即可对齐原有2012实例的T-SQL语法、查询优化器行为,实现向后兼容。
- 流水线中建议追加校验任务:配置完成后可通过该模块查询
sys.databases视图的compatibility_level字段,确认所有目标库配置生效后再进入后续迁移割接步骤。 - 其他服务器级向后兼容开关(比如旧版CLR支持、远程连接兼容、旧版排序规则适配等),都可以通过相同模块执行对应
sp_configure语句完成配置,不需要额外的专用配置标识。 - 如果团队需要标准化配置逻辑,可将上述任务封装为内部自用的Ansible角色,公开社区的同类SQL Server配置角色本质也是封装了相同的T-SQL执行逻辑,自研封装更适配内部流水线的权限、变量规范。
内容的提问来源于stack exchange,提问作者Deepak
相关产品推荐
相关产品推荐

