浪潮软件SQL Server 2008 数据库的兼容模式
操作系统: 数 据 库: SqlSrv 2008
软件版本: PS10.2 软件模块:
问题描述:
SQL Server 2008 数据库的默认兼容级别是100,浪潮软件PS10在建账套时会自动把cwbase数据库的兼容级别改为80(与SQL Server 2000兼容),兼容级别的详细说明如下。
产生原因:
解决方法:
兼容模式是将某些数据库设置为与指定的 SQL Server 版本兼容,以下 ALTER DATABASE 语法替换 sp_dbcmptlevel 过程来设置数据库兼容级别,也可以在Management Studio中右键打开数据库属性窗口,在选项-兼容级别中查看、更改。
语法
ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 }
参数
database_name
要修改的数据库的名称。
COMPATIBILITY_LEVEL { 80 | 90 | 100 }
要使数据库与之兼容的 SQL Server 版本。该值必须为下列值之一:
80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008
示例:
以下示例将 cwbase1 数据库的兼容级别更改为 90(SQL Server 2005):
ALTER DATABASE cwbase1 SET COMPATIBILITY_LEVEL = 90
go
注释
对于所有 SQL Server 2008 安装,默认的兼容级别都为 100。除非 model 数据库有更低的兼容级别,否则 SQL Server 2008 中创建的数据库会设置为该级别。在将数据库从 SQL Server 的任何早期版本升级到 SQL Server 2008 时,如果数据库的兼容级别不在 80 以下,则该数据库将保留其现有的兼容级别。升级兼容级别低于 80 的数据库会将数据库的兼容级别设置为 80。这既适用于系统数据库也适用于用户数据库。使用 ALTER DATABASE 可更改数据库的兼容级别。若要查看数据库的当前兼容级别,请查询 sys.databases 目录视图中的 compatibility_level 列。
利用兼容级别获得向后兼容
兼容级别只影响指定数据库的行为,而不影响整个服务器的行为。兼容级别只实现与 SQL Server 的早期版本保持部分向后兼容。通过将兼容级别用作临时性的迁移辅助工具,可解决相关兼容级别设置控制的行为之间存在的版本差异问题。如果现有 SQL Server 应用程序受到 SQL Server 2008 中行为差异的影响,请对该应用程序进行转换,使之能正常运行。然后使用 ALTER DATABASE 将兼容级别更改为 100。数据库的新兼容性设置将在该数据库下次成为当前数据库(无论是在登录时作为默认数据库还是在 USE 语句中指定)时生效。
SET 选项
新功能可以在旧的兼容级别下正常运行,但是可能需要调整 SET 选项。例如,在兼容级别 80 下使用 xml 数据类型需要相应的 ANSI SET 选项。此外,当数据库兼容级别设置为 90 或更高时,如果将 ANSI_WARNINGS 设置为 ON,则会隐式地将 ARITHABORT 设置为 ON。如果将数据库兼容级别设置为 80,则必须将 ARITHABORT 选项显式设置为 ON。有关详细信息,请参阅影响结果的 SET 选项。
兼容级别和存储过程
执行某一存储过程时,该存储过程将使用定义它的数据库的当前兼容级别。在更改某一数据库的兼容性设置时,该数据库的所有存储过程都将随之自动重新编写。
原创文章,转载请注明: 转载自浪潮888博客
本文链接地址: SQL Server 2008 数据库的兼容模式
文章的脚注信息由WordPress的wp-posturl插件自动生成