web-dev-qa-db-fra.com

SET NOCOUNT Erreur dans la gestion de l'appel SQL après la mise à niveau

Nous mettons à niveau notre environnement de test avec un nouveau serveur et une version mise à jour de Microsoft SQL Server et avons rencontré un problème.

Sur le nouveau serveur, notre ancien code obtiendra "l'opération n'est pas autorisée lorsque l'objet est fermé" lors de l'exécution de certaines procédures stockées. Ce message n'est jamais apparu sur l'ancien serveur. Lorsque nous l'avons retrouvé, le problème peut être résolu en ajoutant SET NOCOUNT ON; à la procédure stockée.

J'ai regardé les valeurs par défaut de la base de données et je n'ai vu aucun paramètre différent (SQL Server 2008 vs SQL Server 2014) lié aux valeurs par défaut.

Quel paramètre dois-je envisager pour résoudre ce problème à l'échelle mondiale sans avoir besoin d'ajouter SET NOCOUNT ON à mille procs stockés?

13
UnhandledExcepSean

La configuration de SQL Server possède une option appelée, de manière appropriée, user options, qui peut être défini à l'aide de sp_configure procédure stockée système. J'ai écrit un article de blog sur SQL Server Science montrant comment inspecter et définir les options utilisateur.

En bref, vous pouvez obtenir la "valeur de configuration" de l'ancien serveur, en utilisant ceci:

EXEC sys.sp_configure 'user options';

Ensuite, configurez le nouveau serveur pour utiliser les mêmes options via ceci:

EXEC sys.sp_configure 'user options', <config value>;
RECONFIGURE

(remplacez la <valeur de configuration> par la valeur de l'ancien serveur).

16
Max Vernon