2011-12-09 30 views
8

¿Cómo evito que SQL Management Studio (10.50.2500.0) lo agregue al comienzo de cada procedimiento almacenado cuando hago clic con el botón derecho en/Modificar?Detener que SQL Server Management Studio agregue ANSI_NULLS y QUOTED_IDENTIFIER

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

Ninguna de estas configuraciones me es útil. ANSI_NULLS ON y QUOTED_IDENTIFIER ON están configurados en todos mis servidores, bases de datos y conexiones que establezco. Además de eso, nunca utilizo comillas dobles (utilicé corchetes para las palabras reservadas) y todos mis campos con nulos que utilizo correctamente son NULOS cuando es necesario.

Elimino las configuraciones cada vez que edito un procedimiento. Todos mis procedimientos los tienen configurados correctamente y eso nunca cambiará en mi entorno. Verified by:

SELECT uses_ansi_nulls, uses_quoted_identifier 
FROM sys.sql_modules 
WHERE object_id = object_id('proc_name') 
+4

no puedo encontrar un medio para hacerlo (Esperaría que aparezcan en 'Herramientas -> Opciones -> Explorador de objetos del servidor SQL -> Creación de secuencias de comandos '), pero probablemente no quiera eliminarlos de todos modos (¿Qué problema le están causando?) –

+0

Sí , parece que ese debería ser el lugar. Es molesto. El único problema que me causan es que son innecesarios y desperdician espacio. Actualicé la pregunta para explicar más. – ThinkingStiff

Respuesta

7

No estoy seguro de si esto cuenta como una respuesta o un no-respuesta inútil, sino como Damien_The_Unbeliever sugerido a pesar de todo no quiere SSMS para detener secuencias de comandos de estas líneas. Debido a que están en la tabla sql_modules forman una parte integral de la definición del procedimiento almacenado, junto con el código SQL en sí. Por lo tanto, no pueden "apagarse" más de lo que podría hacerlo su código SQL.

Si crea/modificar un procedimiento almacenado desde una conexión que tiene un valor ANSI_NULLS opción diferente a la utilizada cuando se creó el procedimiento almacenado/definida, entonces cambiar el comportamiento de ese procedimiento almacenado, de forma permanente!

Es por esta razón que SSMS (y cualquier herramienta de objeto de secuencias de comandos SQL medio decente) se siempre salida de estas líneas - porque si se los quite o cambie, va a cambiar la definición del procedimiento almacenado (eliminación en particular, es malo porque significa que el comportamiento del procedimiento almacenado, dependiendo de la conexión desde la que se publique, puede variar).

Haciendo una búsqueda rápida de Google para el "procedimiento almacenado ANSI_NULLS QUOTED", el primer resultado es el siguiente artículo que parece explicar las opciones y su impacto, con mucha claridad: http://ranjithk.com/2010/01/10/understanding-set-quoted_identifier-onoff/

+1

Si alguien no entendió lo que estaban haciendo, tal vez estas serían configuraciones útiles. Y al eliminarlos, solo estoy cambiando la definición del procedimiento almacenado si mi valor predeterminado es diferente al del proceso. Si alguien conoce las consecuencias de sus acciones, debería poder eliminarlas. Los futuros incumplimientos de estos ni siquiera podrán cambiarse. Actualicé mi pregunta para explicar mejor esto. +1 para una buena descripción. – ThinkingStiff

+0

@ThinkingStiff: la diferencia es que las configuraciones siempre con guiones se capturan cuando se crea el procedimiento almacenado; son, de una manera muy real, parte de la definición del procedimiento, mientras que cualquier otra configuración se evalúa en tiempo de ejecución, cuando el procedimiento es ejecutado. –

+0

Sí, edité mi comentario y me di cuenta de que esos no eran buenos ejemplos. – ThinkingStiff

Cuestiones relacionadas