2012-01-19 13 views
5

¿Existe alguna herramienta que pueda analizar las bases de datos de SQL Server para detectar posibles problemas?FxCop para SQL Server - Herramienta para analizar las bases de datos de SQL Server en busca de posibles problemas

Por ejemplo:

  • a foreign key column that is not indexed
  • un índice en una columna uniqueidentifier que no tiene FILL FACTOR
  • una columna LastModifiedDate DATETIME que no tiene UPDATE gatillo para actualizar la fecha y hora
  • un índice grande con " alta "fragmentación
  • índice no fragmentado que existe en múltiples extensiones
  • un disparador que no contiene SET NOCOUNT ON (dejándola suspectible a "Un disparador devuelto un conjunto de resultados y/o corría con SET NOCOUNT OFF mientras que otro conjunto de resultados pendiente era activo.")
  • una base de datos, tabla, procedimiento almacenado, disparador, vista, creado con SET ANSI_NULLS OFF
  • un
  • una base de datos o tabla database or table with SET ANSI_PADDING OFF creado con SET CONCAT_NULL_YIELDS_NULL OFF
  • un índice muy fragmentado que podrían beneficiarse de un menor FILLFACTOR (es decir, más relleno)
  • una tabla con un índice muy amplia agrupado (por ejemplo uniqueidentifier + uniqueidentifier) ​​
  • una tabla con un índice agrupado no único
  • uso de text/ntext en lugar de varchar(max)/nvarchar(max)
  • uso de varchar en columnas que probablemente podría contener cadenas localizadas y debe ser nvarchar (por ejemplo, Nombre, Nombre, Apellido, BusinessName, del País, Ciudad)
  • uso de *=, =*, *=* en lugar de LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
  • trigger that returns a results set
  • cualquier columna declarada como timestamp en lugar de rowversion
  • una columna anulable timestamp
  • uso de image en lugar de varbinary(max)
  • bases de datos no en el modo sencillo (o un archivo de registro más de 100 veces el tamaño del archivo de datos)

¿Existe un FxCop para SQL Server?

Nota: El Microsoft SQL Server 2008 R2 Best Practices Analyzer doesn't fit the bill.

+1

Candidata para [dba.se]? – AakashM

+0

ciertamente no quiero que los administradores de bases de datos modifiquen mis triggers, procedimientos almacenados, tipos de datos de columna, nullablity de columna. –

+1

Quiero decir, * esta pregunta * es quizás un candidato para [Q & A para profesionales de bases de datos] (http://dba.stackexchange.com/) ... – AakashM

Respuesta

8

Hay SQLCop - ¡gratis, y una herramienta bastante interesante también!

enter image description here

+1

Muy agradable. La interfaz podría usar algo de trabajo, pero los controles son bastante extensos. –

+0

@Ian: ¿Espera ejecutar estos controles localmente o como parte de un proceso de compilación automatizado como la integración continua? –

+0

Presumiblemente los ejecutaría de forma interactiva. Las pruebas programadas de servidores/bases de datos pueden ser agradables; a excepción de la tasa de falsos positivos. –

2

Hay una herramienta llamada Static Code Analysis (no es exactamente un nombre genial dada su colisión con VS-integrated FxCop) que se incluye con Visual Studio Premium y Ultimate que puede cubrir al menos el subconjunto de tiempo de diseño de sus reglas. También puede add your own rules si el conjunto de reglas integrado no hace todo lo que desea.

1

No estoy al tanto de uno. Sería bienvenido

Publiqué esto como una respuesta, porque de hecho fui un largo camino para implementar el monitoreo de muchas cosas que se pueden hacer fácilmente en T-SQL: la mayoría de los ejemplos que das se pueden hacer inspeccionando los metadatos.

Después de escribir una gran cantidad de procedimientos de "sistema de salud" y algunas organizaciones que los rodean, escribí un framework para algo como esto, usando metadatos que incluyen propiedades extendidas. Permitió que los objetos se marquen como excluidos de las advertencias utilizando propiedades extendidas, y las reglas se pueden categorizar. Incluí ejemplos de algunas reglas y sus implementaciones en mi presentación de metadatos. http://code.google.com/p/caderoux/source/browse/#hg%2FLeversAndTurtles Esto también incluye una aplicación de Windows Forms que llamará al sistema, pero el sistema en sí está completamente codificado y organizado en T-SQL.

1

Eche un vistazo a SQLCop. Es lo más parecido que he visto a FXCop.

Cuestiones relacionadas