¿Alguien puede aconsejar sobre una forma de enumerar todos los procedimientos almacenados junto con sus nombres de esquema en una base de datos? ¡Gracias!Lista de todos los procedimientos almacenados con el nombre de esquema
Respuesta
Prueba esto:
SELECT
SchemaName = s.name,
ProcedureName = pr.name
FROM
sys.procedures pr
INNER JOIN
sys.schemas s ON pr.schema_id = s.schema_id
Esto debería enumerar todos los procedimientos almacenados y su nombre de esquema como un conjunto de resultados.
Ambas vistas - sys.procedures
y sys.schemas
- tienen bastantes más atributos - pruébelos, si los necesita, inclúyalos en su consulta.
Gracias por su sugerencia. ¿Cómo usaría esto para enumerar todos los procedimientos almacenados y sus esquemas para una base de datos específica? – daniness
@daniness: vaya a esa base de datos ('use (yourdatabase)') y luego ejecute este fragmento de código. Funciona solo en la base de datos en la que se encuentra actualmente. –
SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),
name
FROM sys.procedures;
o
SELECT [schema] = SCHEMA_NAME([schema_id]),
name
FROM sys.procedures;
Para una base de datos específica, sólo puede cambiar el contexto a la primera base de datos, o cambiar la pregunta de Marc ligeramente (mis preguntas no son buenos en este caso porque se basan en funciones que son sensibles al contexto):
SELECT
SchemaName = s.name,
ProcedureName = pr.name
FROM
databasename.sys.procedures pr
INNER JOIN
databasename.sys.schemas s ON pr.schema_id = s.schema_id;
Si quieres hacer esto para todas las bases de datos:
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'
UNION ALL SELECT db = N''' + name + ''',
s.name COLLATE Latin1_General_CI_AI,
o.name COLLATE Latin1_General_CI_AI
FROM ' + QUOTENAME(name) + '.sys.procedures AS o
INNER JOIN ' + QUOTENAME(name) + '.sys.schemas AS s
ON o.[schema_id] = s.[schema_id]'
FROM sys.databases
-- WHERE ... -- probably don't need system databases at least
SELECT @sql = STUFF(@sql, 1, 18, '')
-- you may have to adjust ^^ 18 due to copy/paste, cr/lf, tabs etc
+ ' ORDER BY by db, s.name, o.name';
EXEC sp_executesql @sql;
Las cláusulas de intercalación son necesarias en caso de que tenga bases de datos con intercalaciones diferentes.
Esto le puede ayudar ..
SELECT * FROM sys.procedures;
No devolverá todos los procedimientos. –
Puedes usar el Generador de scripts para obtenerlos. En el botón izquierdo, haga clic derecho en la base de datos para la cual desea obtener Procedimientos almacenados, Tareas-> Generar secuencias de comandos Haga clic en Siguiente y elija Seleccionar objetos de bases de datos específicos y seleccione Procedimientos almacenados y haga clic en Siguiente, allí puede personalizar y generar el guiones.
Prueba esto:
execute [sys].[sp_stored_procedures]
O probar esto y también obtener todos los parámetros:
execute [sys].[sp_sproc_columns]
Ok ... que tendrá que recorrer todos los nombres de catálogo de base de datos con esto, pero. ..
SELECT name,crdate FROM dbo.sysobjects WHERE (type = 'P') order by name
SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),name FROM sys.procedures;
select OBJECT_SCHEMA_NAME([object_id]) as 'SchemaName',name as 'SP Name ' ,
create_date,modify_date FROM sys.procedures order by OBJECT_SCHEMA_NAME([object_id]), name
Agregue alguna descripción, por qué funcionará y cómo funciona. – piyushj
- 1. Cómo cambiar el nombre de esquema de una tabla en todos los procedimientos almacenados
- 2. de consulta a la lista todos los procedimientos almacenados
- 3. ¿Cómo encontrar los procedimientos almacenados por nombre?
- 4. Manera simple de obtener todos los procedimientos almacenados mediante programación
- 5. Lista de procedimientos almacenados de la tabla
- 6. ¿El SQL formado dinámicamente en los procedimientos almacenados niega el propósito mismo de los procedimientos almacenados?
- 7. Eliminar todos los procedimientos almacenados en MySQL o usar procedimientos almacenados temporales
- 8. Soltar grupo de procedimientos almacenados por nombre
- 9. Analizar todos los procedimientos almacenados en una base de datos
- 10. Escritura de todos los procedimientos almacenados en Management Studio 2005
- 11. procedimientos almacenados con sqlAlchemy
- 12. Procedimientos almacenados CLR: cómo configurar el esquema/propietario?
- 13. C#/SQL Obtenga todos los procedimientos almacenados y su código
- 14. Encontrar todos los procedimientos almacenados Llamada a una función
- 15. Búsqueda de texto dentro de los procedimientos almacenados de Oracle
- 16. Versiones de procedimientos almacenados
- 17. ¿Qué SQL necesitaría usar para enumerar todos los procedimientos almacenados en una base de datos Oracle?
- 18. Patrón de repositorio con procedimientos almacenados
- 19. ¿Cómo enumero todos los procedimientos almacenados que no están en el sistema?
- 20. Lista de procedimientos almacenados/funciones Línea de comandos de Mysql
- 21. Cómo usar los procedimientos almacenados con Symfony y Doctrine
- 22. Creación de procedimientos almacenados con SQLAlchemy
- 23. Procedimientos almacenados - Fin de días
- 24. ¿Cómo obtengo la lista de todos los procedimientos almacenados y sus parámetros comenzando con un cierto prefijo?
- 25. ¿Entiende primero el código de Entity Framework los procedimientos almacenados?
- 26. Procedimientos almacenados y funciones
- 27. WebMatrix y procedimientos almacenados
- 28. MySQL: ¿Cómo modificar los procedimientos almacenados atómicamente?
- 29. Recuperando una lista filtrada de procedimientos almacenados usando t-sql
- 30. Procedimientos almacenados Ingeniería inversa
tratar 'SELECT * FROM DatabaseName.information_schema.routines donde routine_type = 'PROCEDURE'' – aserwin
Gracias, aserwin y marc_s. ¿Cómo sé que esto enumerará TODOS los procedimientos almacenados para esta base de datos b/c Ejecuté esto y obtuve 164 filas, en comparación con 1,510 registros cuando ejecuté otra consulta, que no guardé, por lo que no estoy seguro de qué se trataba :-(. – daniness