215 votos

Características ocultas de Sql Server

¿Cuáles son las características ocultas de Servidor Sql ?

Por ejemplo, procedimientos almacenados del sistema no documentados, trucos para hacer cosas que son muy útiles pero que no están suficientemente documentados


Respuestas

Gracias a todos por las magníficas respuestas.

Procedimientos almacenados

  • sp_msforeachtable: Ejecuta un comando con '?' sustituido por el nombre de cada tabla (a partir de la versión 6.5)
  • sp_msforeachdb: Ejecuta un comando con '?' sustituido por el nombre de cada base de datos (v7 y superiores)
  • sp_who2: igual que sp_who, pero con mucha más información para la resolución de problemas de los bloques (a partir de la versión 7)
  • sp_helptext: Si desea el código de un procedimiento almacenado, vista y UDF
  • sp_tables: devuelve una lista de todas las tablas y vistas de la base de datos en el ámbito.
  • sp_stored_procedures: devolver una lista de todos los procedimientos almacenados
  • xp_sscanf: Lee los datos de la cadena en las ubicaciones especificadas por cada argumento de formato.
  • xp_fixeddrives: : Encuentra la unidad fija con mayor espacio libre
  • sp_help: Si quiere conocer la estructura de la tabla, los índices y las restricciones de una tabla. También las vistas y las UDF. El atajo es Alt+F1

Recortes

  • Devolución de filas en orden aleatorio
  • Todos los objetos de usuario de la base de datos por fecha de última modificación
  • Sólo fecha de devolución
  • Busca los registros cuya fecha cae dentro de la semana actual.
  • Encuentre los registros cuya fecha se produjo la semana pasada.
  • Devuelve la fecha de inicio de la semana actual.
  • Devuelve la fecha de inicio de la semana pasada.
  • Ver el texto de un procedimiento que se ha desplegado en un servidor
  • Eliminar todas las conexiones a la base de datos
  • Suma de comprobación de la tabla
  • Suma de comprobación de filas
  • Desechar todos los procedimientos de una base de datos
  • Volver a mapear los Ids de inicio de sesión correctamente después de la restauración
  • Llamar a procedimientos almacenados desde una sentencia INSERT
  • Buscar procedimientos por palabra clave
  • Desechar todos los procedimientos de una base de datos
  • Consultar el registro de transacciones de una base de datos mediante programación.

Funciones

  • HashBytes()
  • EncryptByKey
  • Comando PIVOT

Varios

  • Extras de la cadena de conexión
  • TableDiff.exe
  • Activadores de eventos de inicio de sesión (nuevo en el Service Pack 2)
  • Aumento del rendimiento con columnas computadas persistentes (pcc).
  • Configuración de DEFAULT_SCHEMA en sys.database_principles
  • Parametrización forzada
  • Formato de almacenamiento vardecimal
  • Averiguar las consultas más populares en segundos
  • Bases de datos compartidas escalables
  • Función de filtro de tablas/procedimientos almacenados en SQL Management Studio
  • Banderas de rastreo
  • Número después de un GO repite el lote
  • Seguridad mediante esquemas
  • Cifrado mediante funciones de cifrado incorporadas, vistas y tablas base con triggers

91voto

GilM Puntos 2493

En Management Studio, puede poner un número después de un marcador de fin de lote GO para que el lote se repita ese número de veces:

PRINT 'X'
GO 10

Imprimirá 'X' 10 veces. Esto puede ahorrarte el tedioso copiar/pegar cuando haces cosas repetitivas.

70voto

marc_s Puntos 321990

Muchos desarrolladores de Sql Server todavía no parecen conocer el Cláusula OUTPUT (Sql Server 2005 y posteriores) en las sentencias DELETE, INSERT y UPDATE.

Puede ser muy útil saber qué filas se han insertado, actualizado o eliminado, y la cláusula OUTPUT permite hacerlo muy fácilmente: permite acceder a las tablas "virtuales" llamadas inserted y deleted (como en los activadores):

DELETE FROM (table)
OUTPUT deleted.ID, deleted.Description
WHERE (condition)

Si estás insertando valores en una tabla que tiene un campo de clave primaria INT IDENTITY, con la cláusula OUTPUT, puedes obtener el nuevo ID insertado inmediatamente:

INSERT INTO MyTable(Field1, Field2)
OUTPUT inserted.ID
VALUES (Value1, Value2)

Y si se está actualizando, puede ser muy útil saber qué ha cambiado, en este caso, inserted representa los nuevos valores (después de la actualización), mientras que deleted se refiere a los valores antiguos antes de la actualización:

UPDATE (table)
SET field1 = value1, field2 = value2
OUTPUT inserted.ID, deleted.field1, inserted.field1
WHERE (condition)

Si se va a devolver mucha información, la salida de OUTPUT también se puede redirigir a una tabla temporal o a una variable de tabla ( OUTPUT INTO @myInfoTable ).

Extremadamente útil - ¡y muy poco conocido!

Marc

52voto

Mitch Wheat Puntos 169614

sp_msforeachtable : Ejecuta un comando con '?' sustituido por el nombre de cada tabla. Por ejemplo

exec sp_msforeachtable "dbcc dbreindex('?')"

Puede emitir hasta 3 comandos para cada tabla

exec sp_msforeachtable
    @Command1 = 'print ''reindexing table ?''',
    @Command2 = 'dbcc dbreindex(''?'')',
    @Command3 = 'select count (*) [?] from ?'

También, sp_MSforeachdb

51voto

C. Lawrence Wenham Puntos 11271

Extras de la cadena de conexión:

MultipleActiveResultSets=true;

Esto hace que ADO.Net 2.0 y superiores lean múltiples conjuntos de resultados de sólo lectura en una única conexión a la base de datos, lo que puede mejorar el rendimiento si estás haciendo muchas lecturas. Puedes activarlo incluso si estás haciendo una mezcla de tipos de consulta.

Nombre de la aplicación=MiNombreDePrograma

Ahora cuando quiera ver una lista de conexiones activas consultando la tabla sysprocesses, el nombre de su programa aparecerá en la columna program_name en lugar de ".Net SqlClient Data Provider"

33voto

Sklivvz Puntos 16412

TableDiff.exe

  • La herramienta de diferencia de tablas permite descubrir y conciliar las diferencias entre una tabla de origen y de destino o una vista. Tablediff Utility puede informar de las diferencias en el esquema y los datos. La característica más popular de tablediff es el hecho de que puede generar un script que puede ejecutar en el destino que reconciliará las diferencias entre las tablas.

Enlace

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X