sql-server – sys.databases中某些列的排序规则是什么?
在Latin1_General_CI_AS_KS_WS以外的排序规则的服务器上运行的代码是: DECLARE @dbname SYSNAME; SET @dbname = DB_NAME(); SELECT [Database] = unpvt.DatabaseName,d.recovery_model_desc) COLLATE SQL_Latin1_General_CP1_CI_AS,page_verify_option_desc ) COLLATE SQL_Latin1_General_CP1_CI_AS,user_access_desc) COLLATE SQL_Latin1_General_CP1_CI_AS,Collation ) ) AS unpvt; 观察到的行为是以下字段不遵守服务器排序规则或数据库排序规则;它们始终以Latin1_General_CI_AS_KS_WS排序规则显示. 在SQL Server 2012上,我们可以使用sys.sp_describe_first_result_set轻松获取有关从特定查询返回的列的元数据.我使用以下内容来确定排序规则不匹配: DECLARE @cmd NVARCHAR(MAX); SET @cmd = ' SELECT DatabaseName = CONVERT(VARCHAR(50),d.name),d.collation_name) FROM sys.databases d WHERE name = DB_NAME(); '; EXEC sp_describe_first_result_set @command = @cmd; 结果: 为什么静态设置这些列的排序规则? 解决方法来自微软的官方消息:
你问(强调我的):
某些列静态设置的原因是查询不需要担心服务器或数据库排序规则(更重要的是:CaSe SenSiTIviTy)才能正常工作.无论整理如何,此查询始终有效: SELECT * FROM sys.databases WHERE state_desc = N'ONLine'; 如果服务器排序规则区分大小写,那么上面的查询将返回0行,就像这样: SELECT * FROM sys.databases WHERE state_desc COLLATE Albanian_BIN = N'ONLine'; 例如,如果使用SQL_Estonian_CP1257_CS_AS排序规则安装SQL Server实例,请运行以下命令: SELECT name,collation_name FROM master.sys.all_columns WHERE collation_name IS NOT NULL AND [object_id] = OBJECT_ID(N'sys.databases'); 您将看到这些结果(或类似的东西,具体取决于您的SQL Server版本): name SQL_Estonian_CP1257_CS_AS collation_name SQL_Estonian_CP1257_CS_AS user_access_desc Latin1_General_CI_AS_KS_WS state_desc Latin1_General_CI_AS_KS_WS snapshot_isolation_state_desc Latin1_General_CI_AS_KS_WS recovery_model_desc Latin1_General_CI_AS_KS_WS page_verify_option_desc Latin1_General_CI_AS_KS_WS log_reuse_wait_desc Latin1_General_CI_AS_KS_WS default_language_name SQL_Estonian_CP1257_CS_AS default_fulltext_language_name SQL_Estonian_CP1257_CS_AS containment_desc Latin1_General_CI_AS_KS_WS delayed_durability_desc SQL_Estonian_CP1257_CS_AS (编辑:荆州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows Server 2003的“微妙战略”
- sql-server-2012 – 如何卸载SQL Server Management Studio
- 法国打击网络盗版施重手 11天拘捕110名嫌犯
- 在现有数据库中创建ASP.Net成员资格数据库结构
- sql-server – 信息架构和主键
- 详解Vmware虚拟机系统镜像文件压缩方法
- sql-server – 将参数传递给TADOStoredProc(Delphi)的更好方
- sql-server – 无法在计算列上创建筛选索引
- VMWare文件未能锁定(Failed to lock the file)的解决方法
- Actoz声称绝不妥协 计划联合唯美德对付盛大