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兼容低版的数据库时要特别注意。

  • 相关阅读:
    【转】动态模型及其求解介绍–番外篇
    【转】动态模型及其求解介绍—下
    Belief propagation
    隐马尔科夫模型(Hidden Markov Models) 系列之一
    隐马尔科夫模型(Hidden Markov Models) 系列之四
    【PGM】factor graph,因子图,势函数potential function,Template models
    词语搭配系统
    PHP Catalan数的几个应用
    PHP 求链表并集
    PHP 输入n,判断从1~n序列中十进制数里1出现的次数
  • 原文地址:https://www.cnblogs.com/yangbingqi/p/2818767.html
Copyright © 2011-2022 走看看