Pregunta

Yo solía trabajar en un lugar donde una práctica común era el uso de la Programación en Pares.Recuerdo cómo muchas pequeñas cosas que podemos aprender unos de otros al trabajar juntos en el código.Recogiendo nuevos accesos directos, fragmentos de código, etc.con el tiempo mejoró significativamente la eficiencia de la escritura de código.

Desde que empecé a trabajar con SQL Server me han dejado en el mío propio.Los mejores hábitos que normalmente debería elegir trabajar junto con otras personas que no puedo hacer ahora.

Así que aquí está la pregunta:

  • ¿Qué son los consejos de forma eficiente la escritura de código TSQL el uso de SQL Server Management Studio?
  • Por favor, mantenga el consejos para 2 – 3 cosas/accesos directos que usted piensa a mejorar la velocidad de codificación
  • Por favor, permanezca dentro del ámbito de TSQL y Administración de SQL Server Studio 2005/2008 Si la función es específico para la versión de Management Studio, por favor indicar:por ejemplo,"Funciona con SQL Server 2008 sólo"

EDITAR:

Me temo que yo podría haber sido malinterpretado por algunos de ustedes.Yo no estoy en busca de consejos para escribir eficiente código TSQL, sino para el consejo sobre cómo utilizar eficazmente Management Studio para acelerar el proceso de codificación del mismo.

El tipo de respuestas que estoy buscando son:

  • el uso de plantillas,
  • teclado los accesos directos,
  • uso de IntelliSense plugins etc.

Básicamente, esas pequeñas cosas que hacen que la experiencia de codificación de un poco más agradable y eficiente.

¿Fue útil?

Solución 2

propiedad de la comunidad wiki Respuesta - siéntase libre de editar o añadir comentarios:

Atajos De Teclado

  • F5, CTRL + E o ALT + X - ejecutar actualmente seleccionado código TSQL
  • CTRL + R – mostrar/ocultar el Panel de Resultados
  • CTRL + N – Abrir Nueva Ventana De Consulta
  • CTRL + L – Mostrar el plan de ejecución de consulta

La Edición De Accesos Directos

  • CTRL + K + C y CTRL + K + U - comentar/descomentar seleccionado el bloque de código (sugerido por Unsliced)
  • CTRL + CAMBIO + U y CTRL + CAMBIO + L - cambia el texto seleccionado a mayúsculas/minúsculas
  • CAMBIO + ALT + La selección de texto - seleccionar/cortar/copiar/pegar un bloque rectangular de texto

Complementos

Otros Consejos

  • El uso de la coma prefijo de estilo (sugerido por el Cade de Roux)
  • El uso de aceleradores de teclado (sugerido por kcrumley)

Enlaces Útiles

Otros consejos

Echa un vistazo a Puerta roja del Símbolo de SQL - es un gran producto (como son la mayoría de la Puerta Roja, de los aportes)

SQL Informar también es gratuita (en línea) herramienta para el formateo de los procedimientos de larga duración, que a veces puede salirse de las manos.

Aparte de eso, he aprendido de la experiencia dolorosa es una buena cosa preceder a cualquier DELETE declaración con un BEGIN TRANSACTION.Una vez que esté seguro de que su declaración es eliminar sólo lo que debe, puede, a continuación, COMMIT.

Me salvó en varias ocasiones ;-)

+1 para el Símbolo de SQL.

Algo real simple que supongo que nunca había visto - que funcionará con casi CUALQUIER entorno SQL (y otras lenguas):

Después de 12 años de codigo SQL, recientemente he convertido en una de convertir a la coma-prefijo de estilo después de ver que en algunos SSMS código generado, he encontrado que es muy eficaz.Yo estaba muy sorprendido de que yo nunca había visto este estilo de antes, sobre todo desde que ha aumentado mi productividad enormemente.

SELECT
t.a
,t.b
,t.c
,t.d
FROM t

Esto hace que sea realmente fácil de editar listas de selección, listas de parámetros, orden de las listas, grupo de listas de tareas, etc.Me estoy dando cuenta que me estoy dedicando mucho menos tiempo engañando con la adición y eliminación de comas desde el final de las listas después de cortar-y-pegar las operaciones - supongo que resulta más fácil porque casi siempre agregar cosas al final, y con postfix comas, que requiere mover el cursor más.

Pruébalo, te va a ser sorprendido - sé que fue.

Mi favorito sugerencia es que al expandir un nombre de tabla en el explorador de objetos, simplemente arrastrando la palabra columnas a la pantalla consulta va a poner una lista de todas las columnas de la tabla en la consulta.Mucho más fácil de eliminar las que no desea que el tipo de los que quiero y es tan fácil, que impide a las personas el uso de los verdaderamente horrible sintaxis select*.Y evita los errores de ortografía.Por supuesto, usted puede ajustar de forma individual arrastrar las columnas así.

Destacando una entidad en una consulta y presionar ALT + F1 se ejecutará sp_help para él, dándole un desglose de las columnas, índices, parámetros, etc.

Trate de usar siempre el más pequeño de tipo de datos que puede y el índice de todos los campos que más se utiliza en las consultas.

Trate de evitar los cursores de servidor tanto como sea posible.Siempre se adhieren a un 'conjunto enfoque basado' en lugar de un "procedimiento" para acceder y manipular los datos.Los cursores pueden a menudo ser evitado mediante el uso de instrucciones SELECT en lugar.

Siempre use la gráfica de la ejecución del plan en el Analizador de Consultas o SHOWPLAN_TEXT o SHOWPLAN_ALL comandos para analizar sus consultas.Asegúrese de que sus consultas a hacer una "búsqueda de Índice" en lugar de un "Index scan" o de una "Mesa de exploración." Un examen de la tabla o un índice de escaneo es muy malo y debe evitarse cuando sea posible.Elegir el derecho de los índices en las columnas derecha.El uso de la más legible Estándar ANSI-combinación de cláusulas en lugar del viejo estilo se une.Con ANSI, la cláusula where se utiliza sólo para el filtrado de datos.Donde como de estilo antiguo se une, la cláusula where se encarga tanto de la condición de combinación y filtrado de datos.

No deje que su front-end de las aplicaciones de consulta o manipulación de los datos directamente a través de SELECT o INSERT/UPDATE/DELETE.En su lugar, crear procedimientos almacenados, y dejar que tus aplicaciones de acceso a estos procedimientos almacenados.Esto mantiene los datos de acceso limpio y consistente a través de todos los módulos de la aplicación, y al mismo tiempo la centralización de la lógica de negocio dentro de la base de datos.

Hablando acerca de los procedimientos Almacenados, no el prefijo de tu procedimiento almacenado con los nombres de "sp_".El prefijo sp_ está reservado para el sistema de procedimiento almacenado que se suministran con SQL Server.Cuando SQL Server se encuentra un nombre de procedimiento comenzando con sp_, primero intenta localizar el procedimiento en la base de datos master, entonces busca cualquier calificadores (base de datos de propietario) ofrecen, a continuación, intenta dbo como el propietario.Así que usted puede realmente ahorrar tiempo en la localización del procedimiento almacenado, evitando la "sp_" como prefijo.

Evitar sentencias SQL dinámicas tanto como sea posible.SQL dinámico tiende a ser más lenta de lo estático SQL, SQL Server debe generar un plan de ejecución cada vez que en tiempo de ejecución.

Cuando es posible, trate de usar la autenticación integrada.Esto significa, olvídate de las sa y otros usuarios de SQL, utilice el usuario de microsoft de aprovisionamiento de la infraestructura y mantener siempre su servidor SQL server, actualizado con todos los parches necesarios.Microsoft hará un buen trabajo de desarrollo, pruebas y liberación de parches, pero es su trabajo para aplicarlo.

Búsqueda en amazon.com libros con buenas reseñas sobre él y lo compre!

CTRL + Yo para búsqueda incremental.Hit F3 o CTRL + Yo ciclo a través de los resultados.

Si usted arrastrar desde el Explorador de Objetos Columnas nodo para una mesa se pone un CSV lista de columnas de la Ventana de Consulta para usted

Los aceleradores de teclado.Una vez que averiguar qué tipo de consultas puede escribir mucho, escribir utilidad de los procedimientos almacenados para automatizar las tareas, y asignarlos a los atajos de teclado.Por ejemplo, este artículo habla acerca de cómo evitar escribir "select top 10 * de SomeBigTable" cada vez que desee obtener un vistazo rápido a los datos de muestra de la tabla.Tengo una enorme versión ampliada de este procedimiento, que se asignan a CTRL + 5.
Un poco más tengo:

  1. CTRL + 0:Rápidamente la secuencia de comandos de los datos de una tabla, o un proc, UDF, o ver la definición
  2. CTRL + 9:encontrar cualquier objeto cuyo nombre contiene una cadena de caracteres (para cuando sabes que hay un procedimiento con "Opción" en el nombre, pero usted no sabe lo que su nombre empieza con)
  3. CTRL + 7:encontrar cualquier proc, UDF, o la vista que incluye una cadena de texto en su código
  4. CTRL + 4:encuentra todas las tablas que tiene una columna con el nombre dado

...y un par más que no me vienen a la mente ahora mismo.Algunas de estas cosas se pueden hacer a través de las interfaces existentes en SSMS, pero SSMS ventanas y widgets puede ser un poco lenta en la carga, especialmente cuando usted está consultando en contra de un servidor a través de internet, y prefiero no tener que recoger mis manos del teclado de todos modos.

Sólo un pequeño one - selecciones rectangulares ALT + DRAG venir en muy práctico para copiar + pegar alineado verticalmente la columna de listas (por ejemplo,cuando manualmente escribiendo una ACTUALIZACIÓN masiva).Escrito TSQL es casi la única vez que lo uso!

Para La Sub Consultas

el explorador de objetos > haga clic en una tabla > secuencia de Comandos de tabla > SELECCIONAR > Portapapeles

A continuación, puede pegar en la sección donde desea que como una sub consulta.

Plantillas / Fragmentos

Puedes crear tus propias plantillas con sólo un fragmento de código.Entonces, en lugar de abrir la plantilla como un nuevo documento sólo tienes que arrastrar a la actual consulta para insertar el fragmento de código.

Un fragmento puede ser simplemente un conjunto de encabezado con comentarios o simplemente un simple trozo de código.

Las transacciones implícitas

Si usted no recuerda a iniciar una transacción antes de su borrado statemens usted puede ir a opciones y establezca las transacciones implícitas por defecto en todas sus consultas.Requieren siempre de una explícita commit / rollback.

Nivel de aislamiento

Ir a opciones y establecer el nivel de aislamiento READ_UNCOMMITED por defecto.De esta manera usted no necesita escribir una NOLOCK en todas sus consultas ad hoc.No se olvide de colocar la sugerencia de tabla al escribir un nuevo punto de vista o un procedimiento almacenado.

La base de datos predeterminada

Su inicio de sesión tiene un valor predeterminado de la base de datos establecida por el DBA (Para mí es generalmente la indeseada uno casi todo el tiempo).

Si usted quiere ser uno diferente debido a que el proyecto que se está trabajando actualmente.

En 'panel Servidores Registrados' > clic Derecho > Propiedades > pestaña propiedades de Conexión > conectar a la base de datos.

Múltiples inicios de sesión

(Estos es posible que ya lo han hecho, sin embargo)

Registrar el servidor varias veces, cada una con un inicio de sesión diferente.Usted puede tener el mismo servidor en el explorador de objetos, abrir varias veces (cada uno con un inicio de sesión diferente).

Para ejecutar la misma consulta ya escribió con un inicio de sesión diferente, en lugar de copiar la consulta sólo hacer un clic derecho sobre el panel de consulta > Conexión > Cambiar conexión.

Otra cosa que ayuda a mejorar la precisión de lo que yo hago no es realmente un management studio punta pero uno usando t-sql en sí.

Siempre que escribo una instrucción update o delete, por primera vez, me incorporar un select into para que yo pueda ver lo que los registros serán afectados.

Ejemplos:

select t1.field1,t2.field2
--update t
--set field1 = t2.field2 
from  mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10

select t1.* 
--delete t1
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 = 'test'

(nota: he utilizado select * aquí sólo a modo de ilustración, yo normalmente sólo seleccionar los pocos campos necesito ver que la consulta es correcta.A veces, puede que necesite ver los campos de otras tablas enla unirse así como los registros I plan para eliminar a asegurarse de que la combinación funcionó como yo pensaba)

Cuando se ejecuta este código, se ejecuta el seleccionado en primer lugar para asegurarse de que es correcta, a continuación, comente la línea de selección(s) y quite el comentario de la eliminación o actualización de las piezas.De esta forma, no te equivoques al ejecutar la eliminación o actualización antes de que usted haya comprobado.También a evitar el problema del olvido comentar las seleccione causando la actualización para actualizar todos los registros de la tabla de base de datos que puede ocurrir si se utiliza esta sintaxis y descomentar la seleccione para ejecutarlo:

select t1.field1,t2.field2
update t
set field1 = t2.field2 
--select t1.field1,t2.field2
from  mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10

Como se puede ver en el ejemplo anterior, si usted elimine la selección y olvidar para volver a un comentario, ¡vaya usted acaba de actualizar toda la tabla y, a continuación, se ejecutaba una selección cuando se pensaba que acaba de ejecutar la actualización.Alguien hizo que en mi oficina esta semana por lo que es tan sólo una persona de todos los clientes podrían iniciar sesión en el cliente web.Para evitar hacer esto.

Utilice el botón de Filtro en el Explorador de Objetos para encontrar rápidamente un determinado objeto (tabla, procedimiento almacenado, etc.) de lo parcial de texto en el nombre o encontrar objetos que pertenecen a un esquema determinado.

Tengo una tarea programada que cada noche escribe cada objeto (tabla, procedimiento almacenado, etc.) a un archivo.He de búsqueda de texto completo de indexación establecida en el directorio de salida, así que cuando estoy en busca de una determinada cadena (por ejemplo, una constante) que está enterrado en algún lugar de la DB que puede rápidamente encontrar.

Dentro de la Gestión Studio puede utilizar las Tareas > Generar Scrips...comando para ver cómo se realiza este.

Me gusta configurar el atajo de teclado de CTRL + F1 como sp_helptext, ya que esto permite que usted para resaltar un procedimiento almacenado y mirar rápidamente a su código.Creo que es un buen complemento para el valor predeterminado ALT + F1 sp_help de acceso directo.

Sugiero que usted cree estándares de scripts SQL y se adhieren a ellos.También el uso de plantillas para crear rápidamente los diferentes tipos de procedimientos almacenados y funciones.Aquí está una pregunta acerca de las plantillas en SQL Server 2005 Management Studio

¿Cómo crear SQL Server 2005 procedimiento almacenado plantillas en SQL Server 2005 Management Studio?

Yo soy desarrollador de SSMSBoost agregar-en que fue lanzado recientemente para SSMS2008/R2, la intención fue la de añadir características que aceleran la rutina diaria de tareas:

Accesos directos:F2 - (en Editor SQL):objeto de secuencia de comandos encuentra unted cursor

CTRL + F2 - (en Editor SQL):encontrar el objeto situado bajo el cursor en el explorador de objetos y la atención que +Se incluye editor de atajos, que falta en SSMS2008 (viene en SSMS2012)

también SSMSBoost añade una barra de herramientas con botones:

  • Syncronize Editor de SQL conexión con el Explorador de Objetos (se centra actual de la base de datos en el Explorador de Objetos)
  • Gestionar sus propias conexiones preferidas y cambiar entre ellos a través de combo-box (incluyendo saltos entre servidores)
  • Auto-sustituciones:escribir "sel"se sustituya por select * from y usted también puede añadir su propio token de sustitución de pares de
  • y algunas funciones más útiles

SSMSBoost toolbar

Mostrar el Diseñador De Consultas con CTRL + CAMBIO + Q

Hacer uso de TRY/CATCH funcionalidad para el error de la captura.

Adam Machanic del Experto en SQL Server 2005 de Programación es un gran recurso para los sólidos de técnicas y de prácticas.

Utilizar el encadenamiento de propiedad para procedimientos almacenados.

Hacer uso de los esquemas para hacer cumplir la seguridad de los datos y funciones.

El uso de Detalles del Explorador de Objetos en lugar del explorador de objetos para la visualización de las tablas, de esta manera usted puede presionar una letra y que se vaya a la primera mesa con la carta de prefijo.

Si usted trabaja con los desarrolladores, a menudo obtener un fragmento de código con formato de una larga línea de código, a continuación, sql bastante impresora add-on para SQL Server management Studio puede ayuda mucho con más de 60+ formateador de opciones.http://www.dpriver.com/sqlpp/ssmsaddin.html

El uso de los marcadores es una gran manera para mantener su cordura si estás trabajando con o solución de problemas de un muy largo proceso.Digamos que usted está trabajando con un derivado de campo en una consulta externa y la definición es otra de las 200 líneas abajo dentro de la consulta interna.Usted puede marcar ambas ubicaciones y, a continuación, ir rápidamente de ida y vuelta entre los dos.

Si usted necesita para escribir una gran cantidad de sprocs para una API de algún tipo.Te puede gustar este tipo de herramientas me escribió cuando yo era un programador.Dicen que tiene unos 200 columnas de la tabla que deben tener un procedimiento almacenado escrito para insertar/actualizar y otro para eliminar.Debido a que usted no desea que su solicitud para acceder directamente a las tablas.Sólo la parte de declaración va a ser una tarea tediosa, pero no si una parte del código está escrito para usted.He aquí un ejemplo...

CREATE PROC upsert_Table1(@col1 int, @col2 varchar(200), @col3 float, etc.)
AS
BEGIN
  UPDATE table1 SET col1 = @col1, col2 = @col2, col3 = @col3, etc.
  IF @@error <> 0
    INSERT Table1 (col1, col2, col3, etc.)
    VALUES(@col1, @col2, @col3, etc.)
END
GO
CREATE PROC delete_Table1(@col1)
AS DELETE FROM Table1 WHERE col1 = @col1

http://snipplr.com/view/13451/spcoldefinition-or-writing-upsert-sp-in-a-snap/

Nota :También puede obtener el código original, y en el artículo escrito en el año 2002 (me siento viejo!)
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=549&lngWId=5

El uso de FICHA en el texto resaltado se hará una sangría.Agradable para la facilidad de organizar el código en un formato legible.También, CAMBIO + FICHA va a quitar sangría.

F5 para ejecutar la consulta actual es una fácil victoria, después de que, el genérico MS editor de comandos de CTRL + K + C para comentar el texto seleccionado y, a continuación, CTRL + K + U comentar.

  • ALT+SHIFT + Selección

Este es un gran uno que he descubierto recientemente - permite seleccionar una sección rectangular de texto, independientemente de los saltos de línea.Muy útil para el recorte de una subconsulta o lista rápidamente.

Devart' SQL Completa express edition es una SSMS addon y es un programa libre y útil complemento.Proporciona el muy necesario el código de formato y características de intellisense.

Yo también uso SSMSToolsPack addon y es muy bueno.Me Encanta;

  1. Es SQL fragmentos donde se puede crear teclas de acceso directo para los fragmentos de código y añade automáticamente al escribir estas teclas y pulse enter.
  2. Búsqueda a través de la historia para recuperar las consultas que se ejecutó hace meses y se olvidó, guarda mucho de mi tiempo.
  3. Restaurar la última sesión.Ahora nunca me guarde mi consulta si tengo sólo reiniciar mi windows.Yo simplemente haga clic en restaurar la última sesión y mi última sesión en la que se presenta y restaurado y conexión creada automáticamente.
  4. Crear instrucciones de inserción a partir de los resultados de la consulta (muy útil).Me encanta este addon.

Una pequeña captura introducido recientemente.SSMSToolsPack no es libre ya de SSMS 2012.Aún está libre para SSMS 2005 y SSMS 2008, sin embargo, hasta.Utilícelo sólo si usted quiere comprar al migrar a SSMS 2012.De lo contrario, puede ser una buena idea acostumbrarse a estar lejos de ella.

Yo recomendaría Puerta Roja del Símbolo de SQL.Auto-descubrimiento (intellisense en tablas, procedimientos almacenados, funciones y funciones nativas) es nada menos que impresionante!:)

Viene con un precio, aunque.No hay libre-ware versión de la cosa.

Ser conscientes de los dos(?) diferentes tipos de ventanas disponibles en SQL Server Management Studio.

Si usted haga clic en una tabla y seleccione Open se va a usar un grid editable que puede modificar las celdas.Si haces clic derecho en la base de datos y seleccione New Query se va a crear un poco diferente tipo de ventana que no se puede modificar la cuadrícula en cuenta, pero le da un par de otras interesantes características, tales como permitir que los diferentes fragmentos de código y lo que le permite ejecutar de forma separada por la selección.

El uso de un SELECT INTO de consulta rápida/fácil de hacer copia de seguridad de las mesas de trabajo y de experimentar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top