Comment forcer l'indication nolock pour les connections au server sql

Est-ce que quelqu'un sait d'un moyen de forcer un indice nolock sur toutes les transactions émises par un certain user? Je voudrais fournir une connection à une équipe de support pour interroger le système de production, mais je veux le protéger en forçant un nolock sur tout ce qu'ils font. J'utilise SQL Server 2005.

C'est une manière douloureuse et hacky de le faire, mais c'est ce que nous faisons là où je travaille. Nous utilisons également l'asp classique, donc nous utilisons des appels inline sql. En fait, nous enveloppons l'appel sql dans une fonction (ici, vous pouvez vérifier pour un user spécifique) et append "SET TRANSACTION ISOLATION LEVEL LIRE UNCOMMITTED" au début de l'appel.

Je crois fonctionnellement c'est la même chose que l'indice de non-locking. Désolé je n'ai pas une réponse SQL pure, je serais intéressé d'entendre si vous trouvez un bon moyen de le faire.

Vous pouvez configurer SQL Management Studio de votre équipe de support pour définir le niveau d'isolation des transactions par défaut sur READ UNCOMMITTED (devises-> Options-> Exécution de requête-> SQL Server-> Avancé). C'est fonctionnellement identique à avoir des astuces NOLOCK sur tout.

Les inconvénients sont que vous auriez à faire cela pour chaque membre de votre équipe de support, et ils auraient la possibilité de changer la configuration sur leur SQL Management Studio.

OK, vous devez clarifier ce que vous essayez de faire ici.

Si vous essayez de réduire le locking de la database et que vous fournissez éventuellement à vos users de support des données qui ne seront peut-être jamais vraiment validées dans la database. Tout en leur permettant d'écrire tout ce qu'ils veulent dans la database, nolock est la voie à suivre. Vous obtiendrez le bonus supplémentaire que votre user sera toujours en mesure d'augmenter leur niveau d'isolation en utilisant la command SET TRANSACTION ISOLATION LEVEL.

Si vous essayez de limiter les dommages qu'ils peuvent causer lors de l'exécution de la database, regardez l'implémentation de la security, assurez-vous qu'ils ne sont autorisés qu'à lire vos tables et supprimez tout access aux procs et fonctions stockées.

Je trouve que NOLOCK est fortement mal compris lors du débordement de la stack.

Vous pouvez créer un user limité pour l'équipe de support, puis écrire des procédures stockées ou des vues avec l'indicateur nolock. Ensuite, donnez seulement l'access à ceux-ci et non à l'access direct à la sélection de table.

Comme Espo l'a laissé entendre, je suis presque sûr qu'il n'y a pas de moyen direct de faire ce que vous requestz. Comme il l'a dit, vous pouvez sortinger-de l'accomplir en limitant l'access de l'user à seulement les procs qui ont embedded dans NOLOCK codé en eux.

Malheureusement, en limitant les users aux SP, cela va à l'encontre du but recherché. J'espérais qu'il y avait un moyen de leur permettre de tout interroger et ainsi améliorer leurs compétences de dépannage. Merci pour votre aide les gars.