Calendario del Blog
Estadísticas de visitantes








Archivo de Blog
- August 2010 (7)
- July 2010 (4)
- June 2010 (1)
- May 2010 (3)
- February 2010 (1)
- January 2010 (2)
- October 2009 (3)
- September 2009 (2)
- July 2009 (1)
- June 2009 (1)
- May 2009 (1)
- April 2009 (1)
- March 2009 (1)
- January 2008 (1)
- November 2007 (3)
- March 2007 (3)
- February 2007 (1)
- January 2007 (1)
- December 2006 (6)
- November 2006 (3)
- October 2006 (3)
- September 2006 (9)
- August 2006 (6)
- July 2006 (4)
- June 2006 (3)
- May 2006 (3)
- April 2006 (1)
- March 2006 (7)
- February 2006 (13)
- January 2006 (6)
- December 2005 (4)
- November 2005 (5)
- October 2005 (7)
- August 2005 (4)
- July 2005 (4)
- June 2005 (9)
- May 2005 (6)
- April 2005 (3)
May 2010
Buscando dependencias en SQL 2005
Continuando con el tema de SQL Server 2005 del post anterior, ahora se me antoja compartir lo que me ha "liado" cuando he tenido que hacer un refactoring a una base de datos modificada sin cuidado alguno y obvio, como está hecha por seres humanos debe tener no uno, sino mucho errores.
En fin, que la idea es encontrar las dependencias de un SP o bien de una tabla, en el caso de la tabla o vista nos basta con:
Si por el contrario se trata de un procedimiento:
| Nombre columna | Tipo de Dato | Descripción |
| name | nvarchar(257) | Nombre del elemento para el que existe una dependencia |
| type | nvarchar(16) | Tipo del elemento |
| updated | nvarchar(7) | Si el elemento es actualizable |
| selected | nvarchar(8) | Si el elemento es usado en un select |
| column | sysname | Columna o parámetro en el que existe dependencia |
| Nombre Columna | Tipo de Dato | Descripción |
| name | nvarchar(257) | Name of the item for which a dependency exists. |
| type | nvarchar(16) | Type of the item. |
GO
sp_depends 'HumanResources.uspUpdateEmployeeLogin'
GO
SELECT _at_TextToFind = 'HumanResources.Employee'
SELECT S.Name AS [Schema], P.Name, M.definition
FROM sys.procedures P
INNER JOIN sys.schemas S ON P.schema_id = S.schema_id
INNER JOIN sys.sql_modules M ON M.object_id = P.object_id
WHERE OBJECT_DEFINITION(P.object_id) LIKE '%'+_at_TextToFind+'%'
ORDER BY S.Name, P.Name
[1] http://msdn.microsoft.com/es-es/library/ms189487.aspx
Conteo de registros en todas las tablas MS SQL 2005
Cuando inicie en esto del desarrollo de software tuve mi primer acercamiento con las tablas del sistema de SQL Server, al atender una incidencia y eliminar una tabla de producción, por tratar de recuperar los datos me dispuse a modificar algunas cosillas, cubrir un par de rastros, etc. Después de eso pasaron un par de años antes de saber más sobre las tablas del sistema.
Hace poco buscando en Internet una consulta mediante las estadísticas que permita hacer el conteo de filas me encontré con un post donde se comentaba que Pablo Álvarez Doval daría una charla sobre optimización de SQL Server 2005.
La charla estuvo genial, se abordaron temas bastante interesantes en tan poco tiempo, tengo mucho por aprender y mucho que compartir, pero sobre todo tengo la gran fortuna de disfrutar mi trabajo, coincidir en tiempo y espacio con grandes desarrolladores (freakies, geeks, etc) y de vez en cuando con uno que otro Técnicoless (para definición del termino, dirigirse al blog de Chema Alonzo.
Bueno después de todo este rollo ¿Que paso con el count de las rows?. Fue el motivo por lo que inicie el post =P, para que no se me olvide como hacer dicho count lo pondré enseguida.
FROM sys.indexes AS [INDEX]
INNER JOIN sys.objects AS O ON [INDEX].object_id = O.object_id
INNER JOIN sys.schemas AS S ON O.Schema_Id = S.Schema_Id
INNER JOIN sys.dm_db_partition_stats AS PS
ON [INDEX].object_id = PS.object_id AND [INDEX].index_id = PS.index_id
WHERE [INDEX].index_id < 2
AND O.is_ms_shipped = 0
AND PS.row_count > 0
ORDER BY PS.row_count DESC, S.Name, O.Name
Buscar texto en los objetos de la base de datos
Los que nos dedicamos a esto del desarrollo del software y lidiar constantemente con código duro o embebido en scripts, bases de datos, etc, etc. requerimos automatizar muchas cosas para facilitar el mantenimiento y desarrollo de sistemas, para esto siempre nos acercamos a san google y vemos con que nos sale. Después de un tiempo creo que es momento de contribuir con la información que en muchas ocasiones he encontrado en google después de varias consultas infructuosas.
En este caso mi intención será de aquí en adelante aportarle algo a google, mostrar más información sobre todo lo que tengo que hacer día a día en el trabajo y aportar un poco a la comunidad de las mejores prácticas con el ideal de hacer de este mundo ... un mundo mejor. =) jajaja.
Iniciando ...
La siguiente consulta nos ayuda a buscar cadenas de texto en los procedimientos almacenados y cuando son bastantes realmente es un dolor de cabeza.
FROM sys.sql_modules M
INNER JOIN sys.objects O ON O.object_id = M.object_id
INNER JOIN sys.schemas S ON O.schema_id = S.schema_id
WHERE M.Definition LIKE '%texto_a_buscar%'
Esto nos debe de valer para SQL 2000 en adelante.
Otra forma de hacer la búsqueda bien puede ser con el siguiente código:
SELECT _at_TextToFind = 'texto_a_buscar'
SELECT S.Name AS [Schema], P.Name, M.definition
FROM sys.procedures P
INNER JOIN sys.schemas S ON P.schema_id = S.schema_id
INNER JOIN sys.sql_modules M ON M.object_id = P.object_id
WHERE OBJECT_DEFINITION(P.object_id) LIKE '%'+_at_TextToFind+'%'
ORDER BY S.Name, P.Name


Comentarios Recientes