Analysis Services 支持 Microsoft Windows 操作系统提供的语言和排序规则。
Language
和 Collation
属性最初在安装期间在实例级别设置,但之后可以在对象层次结构的不同级别进行更改。
在多维模型中(仅),可以在数据库或多维数据集上设置这些属性 - 也可以在为多维数据集中的对象创建的翻译上设置它们。
设置Language
和Collation
时,您可以指定数据模型在处理和查询执行期间使用的设置,或者(仅针对多维数据模型)为模型提供多个翻译,以便外语使用者可以使用其母语与模型进行交互。 显式地为对象(例如数据库、模型或多维数据集)设置 Language
和 Collation
属性适用于开发环境和生产服务器配置为不同区域设置的情况,以确保语言和排序规则与目标环境相匹配。
本主题包含以下部分:
通过 EnableFast1033Locale 提高英语语言环境的性能
支持语言和排序规则属性的对象
Language
和 Collation
属性通常一起公开 - 你可以在其中设置 Language
,也可以设置 Collation
。
可以在这些对象上设置 Language
和 Collation
。
实例。 部署到实例的所有项目都将采用实例的语言和排序规则,假设语言和排序规则未定义。 默认情况下,多维模型将语言和排序规则留空。 部署项目后,生成的数据库和多维数据集将获取实例的语言和排序规则。
最初,语言和排序规则属性是在设置过程中建立的,但管理员可以在 Management Studio 中重写它们。 详细信息请参阅更改实例的默认语言或排序规则。
数据库。 若要中断继承,可以在项目级别显式设置语言和排序规则,这些设置将应用于数据库中包含的所有多维数据集。 除非另有说明,否则数据库中的所有多维数据集都将获得在此级别指定的语言和排序规则。 如果你定期编写代码并部署到不同的区域设置(例如,在中文计算机上开发解决方案,但将其部署到法语子公司拥有的服务器),则设置数据库级别的语言和排序规则是确保解决方案在目标环境中工作的第一步和最重要的步骤。 设置这些属性的最佳位置是在项目内(通过项目中的 “编辑数据库” 命令)。
数据库维度。 尽管设计器在数据库维度上公开
Language
和Collation
属性,但在此对象上设置属性并不有用。 数据库维度不作为独立对象使用,因此使用您定义的属性可能会很困难,甚至是不可能的。 在多维数据集中,维度始终从其多维数据集父级继承Language
和Collation
。 在独立数据库维度对象上设置的任何值将被忽略。多维数据集。 作为主要查询结构,您可以在立方体级别设置语言和排序规则。 例如,你可能想要在同一项目中创建多维数据集的多种语言版本,例如英语和中文版本,其中每个多维数据集都有自己的语言和排序规则。
多维数据集上设置的任何语言和排序规则都由多维数据集中包含的所有度量值和维度使用。 在精细粒度上设置排序规则属性的唯一方法是在维度属性上创建翻译。 否则,假设属性级别没有翻译,则每个多维数据集都有一个排序规则。
此外,还可以在 Translation 对象上单独设置Language
。
向多维数据集或维度添加翻译时,会创建翻译对象。
Language
是翻译定义的一部分。
Collation
另一方面,设置在多维数据集或更高级别,并由所有翻译版本共享。 这在包含翻译的多维数据集的 XMLA 中是显而易见的,你将看到多种语言属性(一个用于每个翻译),但只有一个排序规则。 请注意,维度属性的翻译有一个例外,即你可以重写多维数据集的排序规则以指定与源列相符的属性排序规则(数据库引擎支持对单独列设置排序规则),通常配置单个翻译以从不同的源列中获取成员数据。 但是,对其他所有情况,Language
本身使用,不涉及 Collation
。 请参阅翻译(Analysis Services)以获取详细信息。
Analysis Services 中的语言支持
该Language
属性设置对象的区域设置,用于处理、查询和支持Captions
Translations
多语言方案。 区域设置基于语言标识符(如英语)和地区(如美国或澳大利亚),进一步细化日期和时间格式。
在实例级别,属性在安装过程中设置,并基于 Windows 服务器操作系统的语言(假定已安装语言包,可支持 37 种语言之一)。 无法在安装程序中更改语言。
安装后,可以在 Management Studio 或 msmdsrv.ini 配置文件中使用服务器属性页替代 Language
。 可以从更多语言中进行选择,包括 Windows 客户端支持的所有语言。 在实例级别设置时,Language
会在服务器上定义随后部署的所有数据库的区域设置。 例如,如果设置为 Language
德语,则部署到实例的所有数据库都将具有语言属性 1031(德语的 LCID)。
Language 属性的值是地区标识符(LCID)
下拉列表中出现的任何 LCID都是有效值。 在 Management Studio 和 SQL Server Data Tools 中,LCID 以字符串等效项表示。 无论工具如何,只要公开属性, Language
都会显示相同的语言。 拥有相同的语言列表可确保在整个模型中一致地实现和测试翻译。
尽管 Analysis Services 按名称列出语言,但为属性存储的实际值为 LCID。 以编程方式或通过 msmdsrv.ini 文件设置语言属性时,请使用 区域设置标识符(LCID) 作为值。 LCID 是一个 32 位值,由用于标识特定语言的语言 ID、排序 ID 和保留位组成。 Analysis Services 使用 LCID 为 Analysis Services 实例和对象指定所选语言。
可以使用十六进制或十进制格式设置 LCID。
Language
属性的几个有效值示例包括:
0x0409或1033 English(美国)
0x0411或 1041 日语
0x0407 或 1031 德国(德语)
0x0416 或 1046,葡萄牙(巴西)。
若要查看更长的列表,请参阅 由 Microsoft 分配的区域 ID。 有关更多背景信息,请参阅 代码页。
注释
该 Language
属性不确定返回系统消息的语言,或用户界面中显示的字符串。 错误、警告和消息会被本地化为 Office 和 Office 365 支持的所有语言,并且当客户端连接指定其中一种支持的区域设置时,将自动使用。
Analysis Services 中的排序规则支持
Analysis Services 专门使用 Windows 和二进制排序规则。 它不使用旧版 SQL Server 排序规则。 在立方体中,整个过程中将使用单一的排序规则,但在属性层级的翻译除外。 有关定义属性翻译的详细信息,请参阅翻译(Analysis Services)。
排序规则控制所有字符串在大小写字母语言脚本中的区分大小写,但对象标识符除外。 需要注意,如果在对象标识符中使用大写和小写字符,对象标识符是否对大小写敏感不是由排序规则决定的,而是由 Analysis Services 决定的。 对于以英语脚本编写的对象标识符,无论排序规则如何,对象标识符始终不区分大小写。 西里尔语和其他两院语言是相反的(总是区分大小写)。 有关详细信息,请参阅 全球化提示和最佳做法(Analysis Services )。
Analysis Services 中的排序规则与 SQL Server 关系数据库引擎的排序规则兼容,前提是您在为每个服务选择排序选项时保持一致性。 例如,如果关系数据库对重音敏感,则应以同样的方式配置多维数据集。 排序规则设置发生分歧时可能会出现问题。 有关示例和解决方法,请参阅 Unicode 字符串中的空白根据排序规则的不同而有不同的处理结果。 若要详细了解排序规则和数据库引擎,请参阅 排序规则和 Unicode 支持。
排序规则类型
Analysis Services 支持两种排序规则。
Windows 排序规则
Windows 排序规则根据语言的语言和文化特征对字符进行排序。 在 Windows 中,排序规则的数量超过了与之一起使用的区域设置(或语言),因为许多语言共享常见的字母表和规则来排序和比较字符。 例如,33 个 Windows 区域设置(包括所有葡萄牙语和英语 Windows 区域设置)使用 Latin1 代码页(1252),并遵循一组用于排序和比较字符的常见规则。
二进制排序规则(BIN 或 BIN2)
二进制排序规则对 Unicode 码位进行排序,而不是对语言值进行排序。 例如,在 Unicode 数据上使用时,Latin1_General_BIN和Japanese_BIN产生相同的排序结果。 虽然语言排序可能会生成类似于 aAbBcCdD 的结果,但二进制排序将是 ABCDabcd,因为所有大写字符的代码点都集体高于小写字符的代码点。
排序顺序选项
排序选项用于根据大小写、重音、假名和宽度敏感度优化排序和比较规则。 例如,Analysis Services 的配置属性的 Collation
默认值为 Latin1_General_AS_CS,指定使用 Latin1_General 字符集序,并采用重音敏感、大小写敏感的排序顺序。
请注意,BIN 和 BIN2 与其他排序选项相互排斥(如果您需要使用 BIN 或 BIN2,请清除重音敏感的排序选项。) 同样,如果选择 BIN2,则区分大小写、不区分大小写、区分重音、不区分重音、区分假名和区分宽度的选项不可用。
下表介绍了 Analysis Services 的 Windows 排序规则排序顺序选项和关联的后缀。
排序顺序(后缀) | 排序顺序说明 |
---|---|
二进制 (_BIN) 或 BIN2 (_BIN2) | SQL Server 中有两种类型的二进制排序规则:较旧的 BIN 排序规则和较新的 BIN2 排序规则。 在 BIN2 排序规则中,所有字符都根据其代码点进行排序。 在 BIN 排序规则中,仅按代码点对第一个字符进行排序,其余字符根据其字节值进行排序。 (由于 Intel 平台是小端架构,因此 Unicode 代码字符始终以字节序交换的形式存储。) 对于 Unicode 数据类型上的二进制排序规则,区域设置不会在数据排序中考虑。 例如,在 Unicode 数据上使用Latin_1_General_BIN和Japanese_BIN生成相同的排序结果。 二进制排序顺序既区分大小写,也区分重音。 二进制排序顺序的速度也最快。 |
区分大小写 (_CS) | 区分大写字母和小写字母。 如果选中,则小写字母在大写版本之前进行排序。 可以通过指定参数_CI来显式设置不区分大小写。 特定于排序规则的情况设置不适用于对象标识符,例如维度、多维数据集和其他对象的 ID。 有关详细信息,请参阅 全球化提示和最佳做法(Analysis Services )。 |
区分重音 (_AS) | 区分重音字符和非重音字符。 例如,“a”不等于“ấ”。 如果未选择此选项,Analysis Services 将在排序时视有重音和无重音的字母版本为相同。 可以通过指定_AI进行不区分重音的显式设置。 |
区分假名 (_KS) | 区分两种类型的日语假名字符:平假名和片假名。 如果未选择此选项,Analysis Services 会认为平假名和片假名字符在排序时是相等的。 没有用于不区分假名排序的排序顺序后缀。 |
区分全半角 (_WS) | 区分单字节字符和以双字节字符表示的相同字符。 如果未选择此选项,Analysis Services 会将同一字符的单字节和双字节表示形式视为相同的排序目的。 对不区分宽度的排序没有排序顺序后缀。 |
更改实例的默认语言或排序规则
默认语言和排序规则是在安装过程中建立的,但可以在安装后配置过程中进行更改。 更改实例级别的排序规则并不简单,并附带以下要求:
服务重启。
更新现有对象的排序规则设置。 创建对象时,将继承排序规则设置一次。 必须手动完成对排序的后续更改。 有关如何在整个模型中传播排序规则更改的提示,请参阅 使用 XMLA 在数据模型中更改语言和排序规则 。
更新排序规则后,重新处理分区和维度。
可以使用 SQL Server Management Studio 或 AMO PowerShell 在服务器级别更改默认语言或排序规则。 或者,可以修改 <msmdsrv.ini 文件中的语言> 和 <排序规则名称> 设置,并指定语言的 LCID。
在 Management Studio 中,右键单击服务器名称 | 性能 | 语言/排序规则。
选择排序选项。 要选择“二进制”或“二进制 2”,首先请清除“区分重音”的复选框。
请注意,排序规则和语言是完全独立的设置。 如果更改一个,则不会筛选另一个值以显示常见组合。
更新数据模型以使用新的排序规则(请参阅以下部分)。
重启服务。
更改多维数据集上的语言或排序规则
在解决方案资源管理器中,双击多维数据集以在多维数据集设计器中打开它。
在“度量值”或“维度”窗格中,选择顶部节点。 任一窗格的顶级对象是多维数据集。
在“属性”中,设置
Language
和Collation
。 选择的值将被用于所有多维数据集对象,包括多维数据集的维度和度量值,并且会影响处理和查询操作。在多维数据集中的对象上嵌入备用语言和排序规则属性的唯一方法是通过翻译。 有关详细信息,请参阅翻译(Analysis Services)。
使用 XMLA 更改数据模型中的语言和排序规则
创建对象时,语言和排序规则设置将继承一次。 必须手动完成对这些属性的后续更改。 快速更改多个对象的排序规则的方法之一是对 XMLA 脚本使用 ALTER 命令。
默认情况下,排序规则在数据库级别只设置一次。 整个对象层次结构的其余部分都隐含继承。 如果您在多维数据集中对象的各个维度属性上显式设置 Collation
,它将出现在 XMLA 定义中。 否则,只有顶层的排序规则属性存在。
在使用 XMLA 修改现有数据库之前,请确保不会引入数据库和用于生成数据库的源文件之间的差异。 例如,你可能想要使用 XMLA 快速更改语言或排序规则来进行概念验证测试,随后进行源文件的更改,请参阅 更改多维数据集上的语言或排序规则,然后使用现有的操作程序重新部署解决方案。
在 Management Studio 中,右键单击数据库 | 将数据库脚本编写为 | ALTER To | 新建查询编辑器窗口。
进行搜索并将现有的语言或排序规则更换为替代值。
按 F5 执行脚本。
重新处理立方体。
通过启用 EnableFast1033Locale 提高英语语言环境的性能
如果使用英语(美国)语言标识符(0x0409或 1033)作为 Analysis Services 实例的默认语言,则可以通过设置配置属性(仅可用于该语言标识符的高级配置属性) EnableFast1033Locale
来获得其他性能优势。 将此属性的值设置为 true 可使 Analysis Services 使用更快的算法进行字符串哈希和比较。 有关设置配置属性的详细信息,请参阅 Analysis Services 中的“配置服务器属性”。
Analysis Services 中的GB18030支持
GB18030是用于编码中文字符的中华人民共和国中单独的标准。 在 GB18030 中,字符长度可以是 1 个字节、2 个字节或 4 个字节。 在 Analysis Services 中,处理来自外部源的数据时没有数据转换。 数据只是被存储为 Unicode。 在查询时,当根据客户端操作系统设置返回的查询结果中包含文本数据时,会通过 Analysis Services 客户端库(特别是 MSOLAP.dll OLE DB 提供程序)执行 GB18030 转换。 数据库引擎还支持GB18030。 有关详细信息,请参阅 排序规则和 Unicode 支持。
另请参阅
Analysis Services 多维度全球化方案
全球化提示和最佳做法 (Analysis Services)
排序规则和 Unicode 支持