sql - 列与取消透视表列表中其他列的类型冲突

标签 sql sql-server-2008 tsql

我将sys.[views]转换为键值对,以便与另一台服务器上的值进行比较以进行一致性测试。我遇到了一个问题,返回错误。

Msg 8167, Level 16, State 1, Line 51

The type of column "type" conflicts with the type of other columns specified in the UNPIVOT list.


查询:
SELECT
sourceUnpivoted.idServer,
sourceUnpivoted.sourceServerName,
sourceUnpivoted.name,
sourceUnpivoted.columnName,
sourceUnpivoted.columnValue
FROM (
SELECT 
CAST('1' AS VARCHAR(255)) AS idServer,
CAST('thisOne' AS VARCHAR(255)) AS sourceServerName,
CAST('theDatabase' AS VARCHAR(255)) AS sourceDatabaseName,
CAST(name AS VARCHAR(255)) AS name,
CAST(object_id AS VARCHAR(255)) AS object_id,
CAST(principal_id AS VARCHAR(255)) AS principal_id,
CAST(schema_id AS VARCHAR(255)) AS schema_id,
CAST(parent_object_id AS VARCHAR(255)) AS parent_object_id,
CAST(type AS VARCHAR(255)) AS type,
CAST(type_desc AS VARCHAR(255)) AS type_desc,
CAST(create_date AS VARCHAR(255)) AS create_date,
CAST(lock_escalation_desc AS VARCHAR(255)) AS lock_escalation_desc
...
FROM noc_test.dbo.stage_sysTables
) AS databaseTables
UNPIVOT (
columnValue FOR columnName IN (
object_id,
principal_id,
schema_id,
parent_object_id,
type,
type_desc,
create_date,
lock_escalation_desc
) 
) AS sourceUnpivoted
为什么这不像[type][type_desc][lock_escalation_desc] ???
我也尝试过CONVERT(VARCHAR(255),type) AS type

最佳答案

这实际上是整理问题。我可以通过更改以下行来解决它:

CAST([type] collate database_default AS VARCHAR(255)) AS [type], 
CAST(type_desc collate database_default AS VARCHAR(255)) AS type_desc, 
CAST(create_date AS VARCHAR(255)) AS create_date, 
CAST(lock_escalation_desc collate database_default AS VARCHAR(255)) AS lock_escalation_desc 

特定的问题是name整理为Latin1_General_CI_AS,而您提到的其他3列则整理为Latin1_General_CI_AS_KS_WS(至少,在我的机器上,我不确定使用不同默认排序规则的服务器/数据库上的情况) 。

关于sql - 列与取消透视表列表中其他列的类型冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158017/

相关文章:

sql - 外键是指同表的主键列

sql-server - 有没有办法防止 SQL Server 以静默方式截断局部变量和存储过程参数中的数据?

sql-server - 左连接的 CTE 性能低下

在同一条目上并行更新的 Mysql 锁(使用 sidekiq)

sql - 如何在 MySQL 数据库中显示所有包含更多信息(创建日期、大小等)的表?

sql-server - 将 XML 显式查询设置为变量

sql - 关键字 'LEFT' 附近的语法不正确

mysql - 如何将一个表中超过 30 天记录的数据移动到另一个表中?

mysql - 在 MySQL 中创建 "Numbers Table"

sql - 如何在sql server中拆分字符串值