¿Cuáles son algunas características ocultas de SQL Server ?
Por ejemplo, los procedimientos almacenados del sistema no documentados, ¿trucos para hacer cosas que son muy útiles pero no están suficientemente documentados?
Respuestas
¡Gracias a todos por todas las excelentes respuestas!
Procedimientos almacenados
- sp_msforeachtable: ejecuta un comando con '?' reemplazado con cada nombre de tabla (v6.5 y superior)
- sp_msforeachdb: ejecuta un comando con '?' reemplazado con cada nombre de base de datos (v7 y superior)
- sp_who2: al igual que sp_who, pero con mucha más información para la resolución de problemas de bloques (v7 y posteriores)
- sp_helptext: si desea el código de un procedimiento almacenado, vea & UDF
- sp_tables: devuelve una lista de todas las tablas y vistas de la base de datos en el alcance.
- sp_stored_procedures: devuelve una lista de todos los procedimientos almacenados
- xp_sscanf: lee datos de la cadena en las ubicaciones de argumento especificadas por cada argumento de formato.
- xp_fixeddrives:: encuentre la unidad fija con el mayor espacio libre
- sp_help: si desea conocer la estructura de la tabla, los índices y las restricciones de una tabla. También vistas y UDF. El atajo es Alt + F1
Fragmentos
- Devolviendo filas en orden aleatorio
- Todos los objetos de usuario de la base de datos por última fecha de modificación
- Fecha de regreso solamente
- Encuentre registros de qué fecha cae en algún lugar dentro de la semana actual.
- Encuentra registros de la fecha que ocurrió la semana pasada.
- Devuelve la fecha para el comienzo de la semana actual.
- Devuelve la fecha de inicio de la semana pasada.
- Vea el texto de un procedimiento que se ha implementado en un servidor
- Descarte todas las conexiones a la base de datos
- Table Checksum
- Suma de comprobación de fila
- Descarte todos los procedimientos en una base de datos
- Vuelva a asignar los ID de inicio de sesión correctamente después de restaurar
- Llamar a procedimientos almacenados desde una declaración INSERT
- Buscar procedimientos por palabra clave
- Descarte todos los procedimientos en una base de datos
- Consulte el registro de transacciones para una base de datos mediante programación.
Las funciones
- HashBytes ()
- EncryptByKey
- Comando PIVOT
Misceláneos
- Cadena de conexión extras
- TableDiff.exe
- Desencadenantes para eventos de inicio de sesión (nuevo en Service Pack 2)
- Aumento del rendimiento con columnas computadas persistentes (pcc).
- Configuración DEFAULT_SCHEMA en sys.database_principles
- Parametrización Forzada
- Formato de almacenamiento vardecimal
- Resolver las consultas más populares en segundos
- Bases de datos compartidas escalables
- Función de filtro de tabla / procedimiento almacenado en SQL Management Studio
- Trazar banderas
- Número después de que se
GO
repite el lote - Seguridad usando esquemas
- Cifrado utilizando funciones de cifrado integradas, vistas y tablas base con disparadores
sql-server
tsql
Sklivvz
fuente
fuente
Respuestas:
En Management Studio, puede poner un número después de un marcador GO de fin de lote para que el lote se repita esa cantidad de veces:
Imprimirá 'X' 10 veces. Esto puede salvarlo de tediosas copias / pegados al hacer cosas repetitivas.
fuente
Muchos desarrolladores de SQL Server todavía no parecen saber acerca de la cláusula OUTPUT (SQL Server 2005 y más reciente) en la declaración DELETE, INSERT y UPDATE.
Puede ser extremadamente útil saber qué filas se han INSERTADO, ACTUALIZADO o ELIMINADO, y la cláusula OUTPUT permite hacer esto muy fácilmente: permite el acceso a las tablas "virtuales" llamadas
inserted
ydeleted
(como en los desencadenantes):Si está insertando valores en una tabla que tiene un campo de clave primaria INT IDENTITY, con la cláusula OUTPUT, puede obtener la nueva ID insertada de inmediato:
Y si está actualizando, puede ser extremadamente útil saber qué cambió: en este caso,
inserted
representa los nuevos valores (después de la ACTUALIZACIÓN), mientras sedeleted
refiere a los valores anteriores antes de la ACTUALIZACIÓN:Si se devuelve una gran cantidad de información, la salida de OUTPUT también se puede redirigir a una tabla temporal o una variable de tabla (
OUTPUT INTO @myInfoTable
).Extremadamente útil, ¡y muy poco conocido!
Bagazo
fuente
sp_msforeachtable
: Ejecuta un comando con '?' reemplazado con cada nombre de tabla. p.ejPuede emitir hasta 3 comandos para cada tabla
También,
sp_MSforeachdb
fuente
Cadena de conexión extras:
MultipleActiveResultSets = true;
Esto hace que ADO.Net 2.0 y versiones posteriores lean múltiples conjuntos de resultados de solo lectura hacia adelante y solo lectura en una sola conexión de base de datos, lo que puede mejorar el rendimiento si está leyendo mucho. Puede activarlo incluso si está haciendo una combinación de tipos de consulta.
Nombre de la aplicación = MyProgramName
Ahora, cuando desee ver una lista de conexiones activas al consultar la tabla sysprocesses, el nombre de su programa aparecerá en la columna nombre_programa en lugar de ".Net SqlClient Data Provider"
fuente
TableDiff.exe
Enlace
fuente
Una técnica TSQL menos conocida para devolver filas en orden aleatorio:
fuente
En Management Studio, puede obtener rápidamente una lista de columnas delimitadas por comas para una tabla:
Esto es útil cuando no desea utilizar el formato atroz devuelto haciendo clic con el botón derecho en la tabla y eligiendo Tabla de secuencias de comandos como ..., luego Insertar en ... Este truco funciona con las otras carpetas ya que le dará una lista delimitada por comas de nombres contenidos dentro de la carpeta.
fuente
Constructores de fila
Puede insertar varias filas de datos con una sola instrucción de inserción.
fuente
Si desea conocer la estructura de la tabla, los índices y las restricciones:
fuente
HashBytes () para devolver el hash MD2, MD4, MD5, SHA o SHA1 de su entrada.
fuente
Averiguando las consultas más populares
Enlace con la comunidad
fuente
La pestaña de resultados espaciales se puede usar para crear arte .
ingrese la descripción del enlace aquí http://michaeljswart.com/wp-content/uploads/2010/02/venus.png
fuente
EXCEPTO e INTERSECTO
En lugar de escribir combinaciones y subconsultas elaboradas, estas dos palabras clave son una forma abreviada mucho más elegante y legible de expresar la intención de su consulta al comparar dos resultados de la consulta. Nuevos a partir de SQL Server 2005, complementan fuertemente UNION, que ya ha existido en el lenguaje TSQL durante años.
Los conceptos de EXCEPTO, INTERSECCIÓN y UNIÓN son fundamentales en la teoría de conjuntos que sirve como base y fundamento del modelado relacional utilizado por todos los RDBMS modernos. Ahora, los resultados del tipo de diagrama de Venn se pueden generar de forma más intuitiva y bastante sencilla utilizando TSQL.
fuente
Sé que no está exactamente oculto, pero no mucha gente sabe sobre el comando PIVOT . ¡Pude cambiar un procedimiento almacenado que usaba cursores y tardé 2 minutos en encontrar un código rápido de 6 segundos que era una décima parte del número de líneas!
fuente
útil cuando se restaura una base de datos con fines de prueba o lo que sea. Vuelve a asignar correctamente los ID de inicio de sesión:
fuente
Descarte todas las conexiones a la base de datos:
fuente
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
también evitará que se produzcan nuevas conexiones.Table Checksum
Suma de comprobación de fila
fuente
No estoy seguro de si esta es una característica oculta o no, pero me topé con esto y he encontrado que es útil en muchas ocasiones. Puede concatenar un conjunto de campos en una sola instrucción de selección, en lugar de usar un cursor y recorrer la instrucción de selección.
Ejemplo:
Resultados:
fuente
Si desea el código de un procedimiento almacenado puede:
(no estoy seguro si es una función oculta, pero la uso todo el tiempo)
fuente
Un truco de procedimiento almacenado es que puede llamarlos desde una instrucción INSERT. Esto me resultó muy útil cuando estaba trabajando en una base de datos de SQL Server.
fuente
En SQL Server 2005/2008 para mostrar números de fila en un resultado de consulta SELECT:
ORDER BY es una cláusula obligatoria. La cláusula OVER () le dice al Motor SQL que ordene los datos en la columna especificada (en este caso, OrderId) y asigne números según los resultados de la ordenación.
fuente
Útil para analizar argumentos de procedimientos almacenados: xp_sscanf
fuente
Fecha de regreso solamente
o
fuente
dm_db_index_usage_stats
Esto le permite saber si los datos de una tabla se han actualizado recientemente, incluso si no tiene una columna de fecha actualizada en la tabla.
Código de: http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/
Información referenciada desde: SQL Server - ¿Cuál es la fecha / hora de la última fila insertada de una tabla?
Disponible en SQL 2005 y posterior
fuente
Aquí hay algunas características que encuentro útiles, pero muchas personas no parecen conocer:
Enlace
Enlace
fuente
Encuentre registros de qué fecha cae en algún lugar dentro de la semana actual.
Encuentra registros de la fecha que ocurrió la semana pasada.
Devuelve la fecha para el comienzo de la semana actual.
Devuelve la fecha de inicio de la semana pasada.
fuente
No es tanto una función oculta sino configurar asignaciones de teclas en Management Studio en Herramientas \ Opciones \ Teclado: Alt + F1 está predeterminado en sp_help "texto seleccionado" pero no puedo vivir sin agregar Ctrl + F1 para sp_helptext "texto seleccionado"
fuente
Columnas calculadas persistentes
Enlace
fuente
Hay momentos en que no hay una columna adecuada para ordenar, o simplemente desea el orden de clasificación predeterminado en una tabla y desea enumerar cada fila. Para hacerlo, puede poner "(seleccione 1)" en la cláusula "ordenar por" y obtendrá lo que desea. Aseado, ¿eh?
fuente
Cifrado simple con EncryptByKey
fuente