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

前端 未结 4 1993
渐次进展
渐次进展 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-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.

提交回复
热议问题