sql-server – sys.databases中某些列的排序规则是什么?
发布时间:2021-05-24 23:35:49 所属栏目:站长百科 来源:网络整理
导读:副标题#e# 我试图在各种版本的SQL Server上运行sys. databases中包含的各个列的UNPIVOT,范围从2005年到2012年. UNPIVOT失败,出现以下错误消息: Msg 8167,Level 16,State 1,Line 48 The type of column “CompatibilityLevel” conflicts with the type of
|
在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;
结果: 为什么静态设置这些列的排序规则? 解决方法来自微软的官方消息:
|
站长推荐

