zoukankan      html  css  js  c++  java
  • SET COMPATIBILITY_LEVEL的作用

    SET COMPATIBILITY_LEVEL 用于设置MS SQL Server的兼容级别

    MS SQL Server 2000:SET COMPATIBILITY_LEVEL=80

    MS SQL Server 2005:SET COMPATIBILITY_LEVEL=90

    MS SQL Server 2008:SET COMPATIBILITY_LEVEL=100

    MS SQL Server 2012:SET COMPATIBILITY_LEVEL=110

    最常使用方法:

    ALTER DATABASE [数据库名]
    SET COMPATIBILITY_LEVEL = 100

    详细用法参见此处

    使用高版本的数据库设置去兼容低版本的数据时要注意。

    比如在MS SQL Server 2008数据库把COMPATIBILITY_LEVEL设置为80,也就是兼容MS SQL Server 2000.

    查看如下查询语句

    比如有两个表:ProductColor、Product

    ProductCategory表有:CategoryID、CategoryName.

    Product表有ProductID、SKU、CategoryID(对应ProductCategory表CategoryID字段)字段。

    SELECT *FROM PRODUCT P INNER JOIN PRODUCTCATEGORY PC ON P.CATEGORYID=PC.CATEGORYID
    
    ORDER BY CATEGORYID
    

    MS SQL Server 2008默认的COMPATIBILITY_LEVEL为100.

    如果把MS SQL Server 2008的COMPATIBILITY_LEVEL设置为80,即兼容MS SQL Server 2000.

    会抛出“System.Data.SqlClient.SqlExceptionAmbiguous column name  CATEGORYID.”如下错误。

    因为这一句

    ORDER BY CATEGORYID
    

    的CATEGORYID没有指定具体是哪个表的字段。

    所以为数据库设置COMPATIBILITY_LEVEL兼容低版的数据库时要特别注意。

  • 相关阅读:
    人人都是架构师:分布式系统架构落地与瓶颈突破
    Node.js区块链开发
    MDD:使用模型驱动开发方式进行快速开发(多图预警)
    MDSF:模型驱动开发(MDD)介绍 | 一群共同享有幸福生活的成长伙伴
    SLF4J with Logback in a Maven Project | Mograblog
    Spring MVC集成slf4j-logback
    SLF4J和Logback日志框架详解
    Python中国社区
    致远互联官网_致远软件_协同 _OA_OA系统_OA办公系统_协同管理软件及云服务领导供应商-致远软件官网
    新精英博客_公司博客_官方公告
  • 原文地址:https://www.cnblogs.com/yangbingqi/p/2818767.html
Copyright © 2011-2022 走看看