1

我目前正在调查一个有时会发生的错误。我还没有看到这种行为的任何模式。我有一个与服务器通信的 vb6 com+-应用程序。

Err: Invalid character value for cast specification. (&H80040E21)
Src: Microsoft OLE DB Provider for SQL Server
Stacktrace:
GetClientRS("SELECT * FROM Visit where GUID=?")
GetVisit("('{5EF4A26A-0909-4371-97F7-A2597CB7ADE3}')")

这是有时会发生的错误。每调用 5 次可能会调用 1-2 次。我在 SQL Server Profiler 中尝试过跟踪,但无法检测到任何错误。

有没有人有任何想法我可以尝试?

Edit:
Code for calling the command:
GetVisit:
    Set cmd = CreateCommand("SELECT * FROM dbo.per_Visit WHERE GUID=?")
    cmd.Parameters.Append cmd.CreateParameter(, adGUID, , , SafeGUID(sGUID))

    Set GetVisit = GetClientRS(cmd, True)

SafeGUID:
     If Mid$(sGUID, 1, 1) <> "{" Then                                  
         sGUID = "{" & sGUID & "}"                                     
    End If

   SafeGUID = sGUID
4

1 回答 1

1

SafeGUID功能可能不够聪明。

什么时候

sGUID = "('{5EF4A26A-0909-4371-97F7-A2597CB7ADE3}')"

实际作为参数传递的值是

{('{5EF4A26A-0909-4371-97F7-A2597CB7ADE3}')}

这不是有效的 GUID。

于 2013-10-16T08:29:28.223 回答