数据库语句高级应用之修改数据库兼容版本

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 数据库在项目开发中几乎是必不可少的元素,sql Server 相信大家都特别熟悉吧,那么是否遇到过这样一个问题呢: 在分析数据库或者部署数据库的时候,出现了数据库不兼容的问题。

数据库在项目开发中几乎是必不可少的元素,sql Server 相信大家都特别熟悉吧,那么是否遇到过这样一个问题呢:

在分析数据库或者部署数据库的时候,出现了数据库不兼容的问题。拿到的是08或者12版本的数据库,结果部署的服务器只装有05或08的sqlserver,一个小小的兼容问题是不是很让有头疼啊。

通用的解决方案是:导出数据库脚本,备份数据库。然后在Sql Server 2005或08的服务器上创建数据库,然后通过备份文件还原数据。这样太麻烦了。既然sql的功能如此强大,肯定有考虑到兼容性的问题,如果修改一下兼容性就会省好多时间,那多方便呀。在网上找了半天,这个方法还真有。


修改数据库兼容版本


语法
ALTER DATABASE database_name 
SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 |110 }
 
参数
database_name 
要修改的数据库的名称。


COMPATIBILITY_LEVEL { 80 | 90 | 100 |110}
要使数据库与之兼容的 SQL Server 版本。该值必须为下列值之一:
 = SQL Server 2000 
 = SQL Server 2005   
 = SQL Server 2008   
 = SQL Server 2012 


备注
对于所有 SQL Server 2012 安装,默认的兼容级别都为 110。除非 model 数据库有更低的兼容级别,否则 SQL Server 2012 中创建的数据库会设置为该级别。将数据库从 SQL Server 的任何早期版本升级到 SQL Server 2012 时,如果数据库的兼容级别不在 80 以下,则该数据库将保留其现有的兼容级别。升级兼容级别低于 80 的数据库会将数据库的兼容级别设置为 80。这既适用于系统数据库,也适用于用户数据库。使用 ALTER DATABASE 可更改数据库的兼容级别。若要查看数据库的当前兼容级别,请查询 sys.databases 目录视图中的 compatibility_level 列。


利用兼容级别获得向后兼容
兼容级别只影响指定数据库的行为,而不影响整个服务器的行为。兼容级别只实现与 SQL Server 的早期版本保持部分向后兼容。通过将兼容级别用作临时性的迁移辅助工具,可解决相关兼容级别设置控制的行为之间存在的版本差异问题。如果现有 SQL Server 应用程序受到 SQL Server 2012 中行为差异的影响,请对该应用程序进行转换,使之能正常运行。然后使用 ALTER DATABASE 将兼容级别更改为 110。数据库的新兼容性设置将在该数据库下次成为当前数据库(无论是在登录时作为默认数据库还是在 USE 语句中指定)时生效。


最佳实践
如果在用户连接到数据库时更改兼容级别,可能会使活动查询产生不正确的结果集。例如,如果在编写查询计划时兼容级别发生更改,则编写后的计划可能同时基于旧的和新的兼容级别,从而造成计划不正确,并可能导致结果不准确。此外,如果将计划放在计划缓存中供后续的查询重用,则问题可能更加复杂。为了避免查询结果不准确,建议您使用以下过程来更改数据库的兼容级别:


. 通过使用 ALTER DATABASE SET SINGLE_USER,将数据库设置为单用户访问模式。
. 更改数据库的兼容级别。
. 通过使用 ALTER DATABASE SET MULTI_USER,将数据库设为多用户访问模式。
   有关设置数据库访问模式的详细信息,请参阅 ALTER DATABASE (Transact-SQL)。

--获取数据库兼容级别
 SELECT name ,compatibility_level ,recovery_model_desc FROM sys.databases WITH(NOLOCK)
 
 
 --将用户设置为单用户访问模式
 ALTER DATABASE test SET SINGLE_USER
 
 
 --修改数据库的兼容级别
 ALTER DATABASE TEST
 SET COMPATIBILITY_LEVEL = 90
 --or
 EXEC sp_dbcmptlevel TEST, 90;
 GO
 
 
 --将用户设置为多用户访问模式
 ALTER DATABASE test SET MULTI_USER

语法

sp_dbcmptlevel [ [ @dbname = ] name ] 
    [ , [ @new_cmptlevel = ] version ]
 

参数
[ @dbname = ] name
要为其更改兼容级别的数据库的名称。数据库名称必须符合标识符的规则。name 的数据类型为 sysname,默认值为 NULL。


[ @new_cmptlevel = ] version
数据库要与之兼容的 SQL Server 的版本。version 的数据类型为 tinyint,默认值为 NULL。该值必须为下列值之一:
 = SQL Server 2000 
 = SQL Server 2005   
 = SQL Server 2008   
 = SQL Server 2012 


返回代码值
0(成功)或 1(失败)


结果集
如果未指定任何参数或未指定 name 参数,则 sp_dbcmptlevel 将返回错误。


如果指定 name 但未指定 version,则 数据库引擎将返回一条消息,显示指定数据库的当前兼容级别。


备注
有关兼容级别的说明,请参阅 ALTER DATABASE 兼容级别 (Transact-SQL)。


权限
只有数据库所有者、sysadmin 固定服务器角色和 db_owner 固定数据库角色的成员(前提是您要更改当前数据库)才能执行此过程。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
4天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
16 2
|
24天前
|
缓存 安全 Java
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
|
1月前
|
存储 监控 关系型数据库
数据库核心术语解析与应用
数据库核心术语解析与应用
61 0
|
1月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
1月前
|
存储 运维 关系型数据库
数据的力量:构筑现代大型网站之数据库基础与应用
数据的力量:构筑现代大型网站之数据库基础与应用
46 0
|
2月前
|
存储 NoSQL 关系型数据库
现代数据库技术的发展与应用
本文将探讨现代数据库技术的发展趋势和广泛应用领域。我们将从传统关系型数据库开始,介绍NoSQL数据库、分布式数据库以及最新的图数据库等技术,探讨它们的特点和优势。此外,我们还将讨论数据库在大数据、云计算和物联网等领域中的应用案例,并展望未来数据库技术的发展方向。
|
1月前
|
供应链 数据库 开发者
深入了解数据库锁:类型、应用和最佳实践
深入了解数据库锁:类型、应用和最佳实践
|
1月前
|
关系型数据库 分布式数据库 数据库
PolarDB PostgreSQL版:Oracle兼容的高性能数据库
PolarDB PostgreSQL版是一款高性能的数据库,具有与Oracle兼容的特性。它采用了分布式架构,可以轻松处理大量的数据,同时还支持多种数据类型和函数,具有高可用性和可扩展性。它还提供了丰富的管理工具和性能优化功能,为企业提供了可靠的数据存储和处理解决方案。PolarDB PostgreSQL版在数据库领域具有很高的竞争力,可以满足各种企业的需求。
|
17天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
84 0
|
6天前
|
存储 传感器 监控
数据库的应用
数据库广泛应用于电子商务、物流、酒店管理、医疗、航空、教育、政府和物联网等领域,用于高效存储和管理商品信息、订单数据、医疗记录、航班详情等各类数据,提升效率和服务质量。随着技术进步,其应用场景将持续扩展。
10 1

热门文章

最新文章