Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 列的类型与UNPIVOT列表中指定的其他列的类型冲突_Tsql_Sql Server 2005 - Fatal编程技术网

Tsql 列的类型与UNPIVOT列表中指定的其他列的类型冲突

Tsql 列的类型与UNPIVOT列表中指定的其他列的类型冲突,tsql,sql-server-2005,Tsql,Sql Server 2005,在SQLServer2005中,我构建了一个触发器,该触发器包含一条SQL语句,该语句用于取消PIVOT的某些数据。有点类似于下面的简单示例:。假设构建触发器的表是“table1”,它设置为在更新后运行 在SSMS中,每当我更新“表1”时,一切正常。不幸的是,每当我在专有应用程序(我没有源代码)中更新“table1”时,它就会失败,并显示消息“列的类型与UNPIVOT列表中指定的其他列的类型冲突” 在做了一点搜索之后,我在视图中将COLLATE DATABASE_DEFAULT添加到我的演员阵容

在SQLServer2005中,我构建了一个触发器,该触发器包含一条SQL语句,该语句用于取消PIVOT的某些数据。有点类似于下面的简单示例:。假设构建触发器的表是“table1”,它设置为在更新后运行

在SSMS中,每当我更新“表1”时,一切正常。不幸的是,每当我在专有应用程序(我没有源代码)中更新“table1”时,它就会失败,并显示消息“列的类型与UNPIVOT列表中指定的其他列的类型冲突”

在做了一点搜索之后,我在视图中将COLLATE DATABASE_DEFAULT添加到我的演员阵容中,没有任何运气。这有点难,因为每当我查询INFORMATION_SCHEMA.COLUMNS时,排序规则都匹配

然后,我将强制转换从VARCHAR更改为CHAR,它可以正常工作。出于显而易见的原因,我宁愿使用VARCHAR。SSMS和应用程序连接之间有什么不同?我假设应用程序没有使用SSMS使用的连接属性


PS:数据库有点古怪,因为它不使用null,而是使用CHAR而不是VARCHAR。

如果您将它们全部强制转换,它确实可以工作。如果您查看SQL fiddle,您将看到两者都被转换为varchar(4000)。正如我所说的,这在SSMS中可以正常工作,但当从专有应用程序运行时,它会失败。如果我将所有强制转换更改为CHAR(4000),那么它将在专有应用程序中工作。这是为什么?您说过SQL小提琴“有些相似”。不一样。请发布复制此问题的实际表定义和触发器代码。对于混淆,我深表歉意,我可以使用上面的SQL FIDLE进行复制。它“有点类似”,因为我不想把这个问题与一堆不必要的代码混淆。我想不出任何连接设置可能会影响这一点。作为替代使用
unpivot
的解决方法,您可以尝试
交叉应用。。。。Union all
。此处为示例语法。