You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.5中CreateXMLFile排序规则随机报错求助

随机出现的SQL程序集字符串排序规则不匹配错误

错误日志

A .NET Framework error occurred during execution of user-defined routine or aggregate "CreateXMLFile":
System.Data.SqlTypes.SqlTypeException: Two strings to be concatenated have different collation.
System.Data.SqlTypes.SqlTypeException:
at System.Data.SqlTypes.SqlString.op_Addition(SqlString x, SqlString y)
at spCreateFile.FileCreator.CreateFile(SqlString FilePath, SqlXml Data, SqlString& ErrorMessage).

背景与代码

CreateXMLFile是一个以SQL程序集形式存储的自定义函数,我们通过存储过程收集数据后调用它生成XML文件。以下是触发报错的存储过程核心代码:

Declare @xmlData xml
set @xmlData = (select * from @ParametersFortable for xml path('Parameter'), root('ParametersCollection'))

DECLARE @Directory nvarchar(max)
Declare @TimeStamp nvarchar(200) = (SELECT format(getdate(),'yyyyMMddHHmmssffff')) 
SET @Directory = 'C:\Path'+ @TimeStamp +'.xml'
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN TRY
       IF ISNULL(@Param1, '') <> '' AND ISNULL(@Param2, '') <> ''
           execute @Status = CreateXMLFile @Directory, @xmlData, @ErrorMessage OUTPUT
END TRY
BEGIN CATCH
    SET @Status = ERROR_NUMBER();
    SET @ErrorMessage = ERROR_MESSAGE();
    update Interface_Log
    set ErrorMessage = @ErrorMessage
    where id = @LogID;
END CATCH;

上述错误正是在存储过程的CATCH块中捕获到的。

关键现象

  • 错误随机触发:针对完全相同的数据,第一次执行可能报错,第二次执行必然成功
  • 范围局限:多个存储过程调用同一程序集函数,仅当前存储过程出现此问题
  • 频率变化:该错误已存在数年,此前数月仅出现1次,近期每日出现数次,疑似与系统整体负载上升有关
  • 已验证点:同一数据生成的@xmlData内容一致、完整,@Directory路径完全正确

疑问

目前仅猜测故障频率上升与系统负载增加有关,但无法确认根本原因。需要定位为什么会随机出现字符串排序规则不匹配的问题,以及为何第二次执行必然成功。

内容的提问来源于stack exchange,提问作者Paglo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:53:25