关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL Server »SQL Server数据库之 “混合排序规则环境”的描述

    SQL Server数据库之 “混合排序规则环境”的描述

    2010-07-05 18:02:00 出处:ITJS
    分享

    此文章主要讲述的是SQL Server数据库之 “混合排序规则环境”,在实际操作中你是否遇到过混合排序规则环境这种情况,假如你对其实际操作或是其相关的实际应用有不解之处时,你就可以浏览我们的文章了

    混合排序规则环境

    兼容性问题对使用多个排序规则存储数据的组织会有影响。大多数组织对所有的 Microsoft® SQL Server数据库™ 2000 数据库使用相同的排序规则,从而消除了所有的排序规则兼容性问题。然而,有些组织存储的数据必须可由使用不同语言的用户查看,并且希望尽可能减少排序规则兼容性问题。

    所有字符和 Unicode 对象(如列、变量和常量)都有排序规则。每当使用具有不同排序规则和代码页的对象时,都必须对查询进行编码以符合排序规则类型强制规则。当对使用运算符将多个具有不同排序规则的简单表达式组合在一起的复杂表达式进行编码时,所有排序规则必须可以隐性转换,或者可以使用 COLLATE 子句显式转换。

    假如没有在字符或 Unicode 表达式中指定排序规则,则默认排序规则可能因连接的当前数据库设置而异。例如,假如没有在字符或 Unicode 常量上指定 COLLATE 子句,则将给该常量指派当前数据库的默认排序规则。这意味着 Transact-SQL 语句的结果在不同数据库的上下文中执行时可能有不同的排序规则。

    若设置复制,则复制网络(包括发布服务器、订阅服务器和分发服务器)中包括的所有数据库都必须使用相同的代码页。

    大容量复制函数 BULK INSERT 和 bcp 命令提示实用工具支持列排序规则。

    尽可能减少排序规则问题

    假如必须存储反映多种语言的字符数据,始终使用 Unicode nchar、nvarchar 和 ntext 数据类型(而不是 char、varchar、text 数据类型)可使排序规则兼容性问题减到最少。使用 Unicode 数据类型可消除代码页转换问题。

    对减少排序规则兼容性问题的另一个建议是使站点标准化,使之区分或不区分大小写和重音字符。若始终选择对大小写和重音使用相同敏感性的排序规则,最终用户将在所有系统间体验到一致的行为。大多数 SQL Server 2000 站点选择不区分大小写但区分重音。

    大小写敏感性还适用于 SQL Server数据库 的对象名;因此,若指定区分大小写的排序规则,则所有用户在查询数据库时必须指定正确的大小写。例如,若服务器区分大小写并创建一个名为 Employees 的表,则所有的查询都必须将该表引用为 Employees。未使用正确大小写的引用(如 EMPLOYEES 或 employees)将无效。

    排序规则和 tempdb

    每次启动 SQL Server 时都生成 tempdb 数据库,该数据库与 model 数据库的默认排序规则相同,后者通常与实例的默认排序规则相同。假如为创建的用户数据库指定的默认排序规则与 model 的排序规则不同,则该用户数据库与 tempdb 的默认排序规则也不同。所有的临时存储过程或临时表都创建并存储在 tempdb 中,这意味着临时表中的所有隐性列以及临时存储过程中的所有类型强制默认常量、变量和参数与永久表和永久存储过程中创建的对等对象使用不同的排序规则。

    text 数据类型可能由此产生问题。例如,某个 SQL Server 2000 实例的默认排序规则是 Latin1_General_CS_AS,并且执行以下语句:

    CREATE DATABASE TestDB COLLATE Estonian_CS_AS USE TestDB   CREATE TABLE TestPermTab (PrimaryKey int PRIMARY KEY, TextCol text )  

    在该系统中,tempdb 数据库对代码页 1252 使用 Latin1_General_CS_AS 排序规则,TestDB 和 TestPermTab.TextCol 对代码页 1257 使用 Estonian_CS_AS 排序规则。假如接下来执行:

    USE TestDB GO -- Create a temporary table with the same column declarations   -- as TestPermTab CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, TextCol text )   -- This statement gets an code page conversion not allowed error   -- because the temporary table is created in tempdb, which has a  -- different default collation than TestDB. INSERT INTO  #TestTempTab SELECT * FROM TestPermTab GO  

    若要消除错误,可使用以下可选方法之一:

    在两个 TextCol 列中使用 Unicode 数据类型 ntext 而不是 text。

    指定临时表列使用用户数据库(而不是 tempdb)的默认排序规则。假如系统需要,这将使临时表得以在多个数据库中使用具有类似格式的表。

    CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY,   TextCol text COLLATE database_default )   

    指定 #TestTempTab 列的正确排序规则:

    CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, TextCol text COLLATE Estonian_CS_AS ) 

    BACKUP 和 RESTORE 中的排序规则

    若还原数据库,RESTORE 将使用记录在备份文件中的源数据库的排序规则。还原的数据库与备份的原始数据库使用相同的排序规则。数据库内具有不同排序规则的个别对象仍保留其原来的排序规则。即使运行还原的实例与运行 BACKUP 的实例使用不同的默认排序规则,仍能还原数据库。

    若目标服务器上已存在同名数据库,还原备份的唯一方法是在 RESTORE 语句中指定 REPLACE。若指定 REPLACE,现有的数据库将由备份文件中的数据库内容完全替换,并且还原数据库的排序规则将与备份文件中记录的排序规则相同。

    若还原日志备份,目的数据库必须与源数据库的排序规则相同。

    排序规则和文本列

    若创建的含有 text 列的表所使用的代码页与数据库默认排序规则的代码页不同,则仅有两种方法可指定插入列的数据值或更新现有值。可以:

    指定 Unicode 常量。

    从另一个具有相同代码页的列中选择值。

    假设数据库和表如下:

    -- Create a database with a default of code page 1252. CREATE DATABASE TestDB  COLLATE Latin1_General_CS_AS -- Create a table with a different code page,   1253. CREATE TABLE TestTab (PrimaryKey int PRIMARY KEY, TextCol text COLLATE Greek_CS_AS )  -- This INSERT statement successfully inserts a Unicode string. INSERT INTO TestTab VALUES (1, N'abc')  -- This INSERT statement successfully inserts data by selecting   -- from a similarly formatted table in another database that uses  -- uses the Greek 1253 code page as its default. INSERT  INTO TestTab SELECT * FROM GreekDatabase.dbo.TestTab  

    以上的相关内容就是对SQL Server数据库的 “混合排序规则环境”的介绍,望你能有所收获。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    IT头条

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    严重缩水!NVIDIA将推中国特供RTX 5090 DD:只剩24GB显存

    00:17

    无线路由大厂 TP-Link突然大裁员:补偿N+3

    02:39

    Meta 千万美金招募AI高级人才

    00:22

    技术热点

    微软已修复windows 7/windows 8.1媒体中心严重漏洞 用户可下载安

    卸载MySQL数据库,用rpm如何实现

    windows 7中使用网上银行或支付宝支付时总是打不开支付页面

    一致性哈希算法原理设计

    MySQL数字类型中的三种常用种类

    如何解决SQL Server中传入select语句in范围参数

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。