A trigger returned a resultset and/or was running with SET NOCOUNT OFF while another outstanding result set was active

前端 未结 4 1939
渐次进展
渐次进展 2021-02-18 23:24

I have 2 servers connected over a low speed wan and we\'re running SQL Server 2008 with Merge replication.

At the subscriber, sometimes when attempting to insert new row

相关标签:
4条回答
  • 2021-02-18 23:59

    set in top of script

    SET NOCOUNT ON;

    0 讨论(0)
  • 2021-02-19 00:01

    The trigger is returning a "resultset" of sorts, the number of rows affected. "(1 row(s) affected) // or n rows...." I don't know why this is being interpreted as a resultset but it is.

    I had a similar issue today and I realized that this issue can be fixed by putting a SET NOCOUNT OFF towards the end of the trigger. Just having the SET NOCOUNT ON at the top of the trigger is not sufficient.

    The trigger in which I am referring is the pre-made "insert" statement in your application.This is most likely the statement throwing the SQL error.

    Now you can use sp_configure 'disallow results from triggers' 1, but, that will disable this for the entire database and that may not be desirable, in case you are expecting some other trigger to return a resultset.

    The OP of the Source I used described the exact same problem you are having if my answer doesn't suffice. Also, MSDN had said

    The ability to return result sets from triggers will be removed in a future version of SQL Server. Avoid returning result sets from triggers in new development work, and plan to modify applications that currently do this. To prevent triggers from returning result sets in SQL Server 2005, set the disallow results from triggers Option to 1. The default setting of this option will be 1 in a future version of SQL Server.

    0 讨论(0)
  • 2021-02-19 00:05

    I had the same problem.

    The problem was an insert with select:

    insert into table (...)
    select ...
    

    The problem was that select had a group statements and returned:

    Warning: Null value is eliminated by an aggregate or other SET operation.

    this causing the problem, I changed instructions max(field) by max(coalesce(field,'')) to avoid the null operation in max group function.

    0 讨论(0)
  • 2021-02-19 00:08

    I got the same issue and have a solution.

    The problem was a stored-procedures with a result set, which was executed in this trigger.

    It seems, that this stored-procedure leads the trigger to have a result set as well.

    0 讨论(0)
提交回复
热议问题