Tabla de contenidos
En este POST, te voy a mostrar una utilidad bastante importante si quieres extraer programación de tu BBDD sobre los procedimientos, funciones, triggers y vistas de una manera fácil y sencilla.
SQL Server
¿Qué es sys?
Es un esquema del sistema, en la que, podemos ver datos, estructuras que son relacionados con nuestra base de datos.
Podemos obtener lo siguiente:
- Listado de las tablas, columnas, vistas y procedimientos de nuestra BBDD.
- Ver quién ejecuta consultas de nuestra BBDD.
- Estadísticas sobre el rendimiento de nuestra BBDD.
Si queréis saber más información sobre el esquema sys, os dejo el siguiente enlace.
¿Qué almacena la tabla sql_modules?
Devuelve una fila para cada objeto que es un módulo definido en lenguaje SQL en SQL Server, incluida la función definida por el usuario escalar compilada de forma nativa.
Los tipos de objetos que te puedes encontrar en sql_modules son:
- P: Procedimientos almacenados
- RF: Procedimiento de filtro de replicación
- V: Vistas
- TR: Triggers o disparadores
- FN: Funciones escalares
- IF: Funciones insertadas con valores de tabla
- TF: Funciones con valores de tabla
- R: Reglas
Si queréis más información sobre sql_modules, os dejo el siguiente enlace. También conviene revisar la tabla objects.
Ejemplo de consulta
Una vez entendido qué es cada cosa, os muestro un ejemplo en el que vamos a extraer programación de procedimientos almacenados, funciones, vistas y triggers:
- Nombre del objeto (nombre de los procedimientos, funciones, vistas, triggers…etc).
- Tipo de objeto (Si es procedimiento, funciones, vistas…etc).
- Definición del objeto (Muestra el código programado de los procedimientos, funciones, triggers…etc).
select o.name as 'Nombre objeto', o.type_desc as 'Tipo objeto', m.definition as 'Código' from sys.sql_modules m inner join sys.objects o on m.object_id=o.object_id order by type_desc,o.name;
MySQL
¿Qué es information_schema?
Proporciona acceso a los metadatos de la base de datos , información sobre el servidor MySQL, como el nombre de una base de datos o tabla, el tipo de datos de una columna o privilegios de acceso. Otros términos que a veces se utilizan para esta información son diccionario de datos y catálogo de sistema .
¿Qué almacena la tabla routines?
Proporciona información sobre las rutinas almacenadas (procedimientos almacenados y funciones almacenadas). La tabla routines, no incluye funciones integradas (nativas) ni funciones cargables.
A diferencia de SQL Server, Los procedimeintos almacenados, vistas, funciones y triggers, están separados por tablas. Por lo que os muestro un listado de las tablas donde lo podéis encontrar.
- Procedimientos almacenados: routines
- Funciones: routines
- Tablas: tables
- Columnas: tables
- Vistas: views
- Triggers o disparadores: triggers
Si queréis más información sobre las tablas, os dejo el siguiente enlace.
Ejemplo de consulta
Una vez entendidas las tablas y dónde se almacenan, os muestro un ejemplo en el que vamos a extraer programación de procedimientos almacenados, funciones, vistas y triggers:
- Nombre del objeto (nombre de los procedimientos, funciones, vistas, triggers…etc).
- Tipo de objeto (Si es procedimiento, funciones, vistas…etc).
- Definición del objeto (Muestra el código programado de los procedimientos, funciones, triggers…etc).
select specific_name as 'Nombre objeto', routine_type as 'Tipo objeto', routine_definition as 'Código' FROM information_schema.routines union select table_name as 'Nombre Objeto','VIEWS' as 'Tipo objeto',view_definition as 'Código' FROM information_schema.views UNION select trigger_name as 'Nombre Objeto','TRIGGERS' as 'Tipo objeto',action_statement as 'Código' from information_schema.triggers order by 'Tipo objeto','Nombre Objeto';
Conclusión
Es una forma rápida y sencilla y poder extraer programación de una base de datos independientemente si es de SQL Server o MySQL a otra. También es rápido de extraer todos los datos e incluso tener un «backup» del contenido programado. Aunque es recomendable siempre hacer un backup de toda la base de datos. Con lo que exportando estos datos mediante csv, es una buena opción.
Si os ha gustado este POST, os sugiero que lo compartáis en vuestras redes sociales para que sirva de ayuda a más gente.
Si nececitas más ejemplos sobre SQL, te recomiendo que visites la categoría de SQL de la Codigoteca