Cree una consulta SQL a partir de una cadena en varias filas.

Un usuario Pregunto ✅

joshhansen29

Hola a todos,

Me doy cuenta de que este podría no ser el mejor enfoque para hacer esto, pero esperaba ver si es posible.

Objetivo general: estoy tratando de usar Power query para generar una lista de todas las columnas y tipos de datos de cada procedimiento almacenado en una base de datos.

Procedimiento almacenado nombre system_type_name
DB_Sch.fmcParAction ExecuteAction nvarchar (30)
DB_Sch.fmcParAction ExecuteActionId nvarchar (30)
DB_Sch.fmcParContainerId ContainerId carbón (16)
DB_Sch.fmcParContainerIdAssembly ContainerId carbón (16)
DB_Sch.fmcParDataCollection DataCollectionId carbón (16)
DB_Sch.fmcParDataCollection DataCollectionName nvarchar (30)
DB_Sch.fmcParDataCollectionByTaskLlist DataCollectionDefName nvarchar (30)
DB_Sch.fmcParDataCollectionRev DataCollectionDefBaseId carbón (16)
DB_Sch.fmcParDataCollectionRev Recopilación de datos nvarchar (48)

He podido acercarme bastante con una solución alternativa, pero requiere un paso manual.

Tengo una consulta que genera una lista de cada procedimiento almacenado en la base de datos.

Procedimiento almacenado
DB_Sch.fmcParAction
DB_Sch.fmcParContainerId
DB_Sch.fmcParContainerIdAssembly
DB_Sch.fmcParDataCollection
DB_Sch.fmcParDataCollectionByTaskLlist
DB_Sch.fmcParDataCollectionRev

También tengo una consulta que generará una lista de cada columna a partir de un solo procedimiento almacenado. (El problema es que solo devolverá resultados para un procedimiento almacenado).

SELECCIONE ‘DB_Sch.fmcParDataCollection’ AS [SP], nombre, system_type_name

FROM sys.dm_exec_describe_first_result_set_for_object (OBJECT_ID (‘DB_Sch.fmcParDataCollection’), NULL)

Procedimiento almacenado nombre system_type_name
DB_Sch.fmcParDataCollection DataCollectionId carbón (16)
DB_Sch.fmcParDataCollection DataCollectionName nvarchar (30)

Entonces, mi solución actual es usar la primera consulta para generar la lista de procedimientos almacenados, luego agregar una columna adicional que crea la consulta para cada Procedimiento almacenado con un UNION al final de cada fila.

image.png

En este punto, puedo copiar el texto de la columna Consulta y pegarlo como la declaración SQL que generará lo que estoy buscando, pero ahora es una consulta estática que no traerá nuevos Procedimientos almacenados que se crean sin actualizar manualmente la consulta.

¡Gracias por adelantado!

Josh

Hola joshhansen29,

No tengo claro su requisito, si es posible, ¿podría explicar «Puedo copiar el texto de la columna Consulta y pegarlo como la declaración SQL que generará lo que estoy buscando, pero ahora es una consulta estática que no traerá nuevos Procedimientos almacenados que se crean sin actualizar manualmente la consulta. .«¿Para mí? ¿Podría utilizar la consulta para obtener este valor directamente?

Atentamente,
Zoe Zhi

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

joshhansen29

En respuesta a dax

Hola,

Lo que quise decir es que puedo copiar toda la columna (en un círculo rojo)

image.png

Luego, puedo pegar el texto en la declaración SQL (en un círculo en azul) de la fuente de otra consulta.

image.png

Básicamente, estoy usando Power query para escribir el texto de otra consulta SQL. Solo esperaba que hubiera una manera de hacerlo directamente sin tener que copiar manualmente el texto generado y pegarlo en la nueva consulta.

¿Tiene sentido?

¡Gracias!

Josh

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *