混合排序规则环境-SQL-的描述-Server数据库之 (混合排序规则有哪些)

教程大全 2025-07-19 09:34:36 浏览

此文章主要讲述的是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,并且执行以下语句:

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

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

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

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

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

BACKUP 和 RESTORE 中的排序规则

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

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

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

排序规则和文本列

混合排序规则环境

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

指定 Unicode 常量。

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

假设数据库和表如下:

【编辑推荐】


oracle数据库sql命令怎么改

oracle中修改数据用update语句。语法:UPDATE 表名 SET 字段=XXX WHERE 条件;如,数据库中,test表数据如下:现在要将王五的名字改成王九,可用如下语句:update test set where;commit;执行后结果:

请写出以下操作的SQL语句,根据下表创建数据库S

1. Createtable S( Sno char(6)primarykey Not null, Sname char(10)notnull, Ssexchar(1) not null check(Ssexin(F,M)) ,Sbirth DATE not null);2. insert into S values(,王燕,F,1985-2-1)3. create view S_view1 as select * from S where Ssex = F;

怎么样用SQL语句创建一个数据库

通常是使用CREATE DATABASE 数据库名称这个语句来创建数据库,但是在不同的数据库管理系统中,后续可以追加的参数有很大不同,例如数据文件存储在哪里,日志文件存储在哪里等,这需要看具体使用哪一种数据库了。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐