Query per restituire dettagli interni circa funzione memorizzata nel database di SQL Server
-
01-10-2019 - |
Domanda
mi è stato dato accesso a un database di SQL Server che viene attualmente utilizzato da terze parti App. In quanto tale, non ho alcuna documentazione su come quel applicazione memorizza i dati o come si recupera.
riesco a capire alcune cose sulla base dei nomi dei vari tavoli ed i parametri che le funzioni definite dall'utente prende e restituisce, ma sto ancora ricevendo errori in ogni altro turno.
Io pensavo che sarebbe davvero utile se ho potuto vedere che cosa le funzioni memorizzate stavano facendo con i parametri indicati per restituire l'output. In questo momento tutto quello che ho potuto capire è come query per i parametri di input e le colonne di output.
C'è un built-in tabella information_schema
che esporrà quello che la funzione sta facendo tra ingresso e uscita?
Soluzione
Se è possibile eseguire una query sul database in qualche modo, e se si dispone delle autorizzazioni necessarie per leggere le viste del catalogo di sistema, allora si potrebbe eseguire la query per ottenere il nome, la definizione (codice SQL) e alcuni pezzi più delle informazioni sulle vostre funzioni:
SELECT
obj.name ,
obj.type ,
obj.type_desc ,
obj.create_date ,
obj.modify_date ,
m.definition ,
m.is_schema_bound
FROM
sys.objects obj
INNER JOIN
sys.sql_modules m ON obj.object_id = m.object_id
WHERE
obj.type IN ('AF', 'FN', 'FS', 'FT', 'IF', 'TF')
Altri suggerimenti
Se si dispone delle autorizzazioni appropriate, si può semplicemente script di tutte le procedure e funzioni memorizzati:
pulsante destro del mouse sul database in SSMS (SQL Server Management Studio), selezionare Operazioni -> generare script, assicurarsi che il database viene evidenziato e fare clic su Avanti. Assicurarsi che le opzioni per lo script fuori stored procedure e funzioni vengono selezionate.
È possibile installare SQL Server Management Studio (Strumenti client) senza richiedere una licenza di SQL Server.
Un altro modo è sp_helptext
che vi mostrerà la fonte della SP superato o UDF;
sp_helptext fnBlaDeBla