If you do not use "set nocount on" in a stored procedure, the "nn rows ..." message is returned to the provider as a resultset. The provider (i.e. ADO) then inspects and parses this resultset and returns the value in it via the "recordsaffected" parameter on the execute methods of the command and/or connection objects.
Doing this requires some overhead on both the client and the server, as well as some network traffic to transmit the resultset.
If you need the value in your client application, don't use set nocount, and provide a variable that the command or connection execute method can deposit the value into.
If you never care about the "recordsaffected" value, it is wise (IMO) to use 'set nocount on' to avoid the needless extra overhead.
Jeff Mason
Custom Apps, Inc.
www.custom-apps.com