Documentare una gigantesca rete di stored procedure correlate in un database MS SQL: quale strumento o formato?


11

Spero che questa sia una domanda con una risposta più breve di "Leggi un libro di 1000 pagine", ma poi, se questa è la situazione reale, allora mi colpirà.

Non sono un vero DBA, sono uno sviluppatore di software che sta realizzando che abbiamo bisogno di un DBA, eppure il negozio in cui lavoro ha zero DBA. Tuttavia, la progettazione del nostro database MS SQL, incluse diverse procedure memorizzate di base, è un casino enorme. Le procedure memorizzate sono lente, sospettiamo che abbiano dei bug, ma non sappiamo nemmeno come dovrebbero funzionare, quindi non sappiamo come risolverli.

All'inizio ho deciso di documentare come dovrebbe funzionare tutto, quindi inizieremo i test unitari e costruiremo una serie di test unitari che aiutano a dimostrare che le procedure memorizzate funzionano davvero. La logica che eseguono è una parte fondamentale della nostra applicazione, si potrebbe dire, sono i "gioielli della corona" del prodotto principale della nostra azienda e il modo in cui funziona è completamente privo di documenti.

Sto cercando la documentazione tecnica specifica che un DBA professionale potrebbe aspettarsi di avere, o potrebbe scrivere se stesso, se fosse necessario, per comprendere una gigantesca rete di procedure memorizzate che si chiamano a vicenda.

  1. Qual è il solito formato per documentare una procedura memorizzata di grandi dimensioni? Descrizione dei valori previsti per ciascun parametro In (ovvero "precondizioni", "postcondizioni", ovvero per parametri booleani cosa cambia quando lo si accende o si spegne, ecc.)

  2. Come si documenta di solito? Solo commenti SQL? Strumenti esterni specifici allo scopo? "Documentazione" esterna? Non disponiamo di strumenti SQL, oltre a MS SQL Management Studio, ma ci chiediamo se esiste uno strumento che possa migliorare la comprensione, la documentazione e il test del nostro ambiente. Forse è un modo migliore di porre la mia domanda; Di quale strumento ho bisogno per risolvere il nostro pasticcio?

Il nostro obiettivo è essere in grado di:

A. Utilizza la documentazione che generiamo o qualsiasi altro strumento che aggiungiamo al nostro ambiente, per aiutare a capire come dovrebbero funzionare le procedure, così possiamo continuare a creare una copertura di test unitari per le procedure memorizzate.

B. Mostrare agli sviluppatori dell'app client come chiamare correttamente ciascuna di queste complesse procedure memorizzate.

C. Unit test delle nostre procedure memorizzate.

Risposte:


4

La cosa più importante della documentazione è che ha senso per te. Non esiste un modo davvero standard per farlo.

Se hai un sacco di procedure memorizzate che si collegano tra loro a partire da un diagramma di Visio con un oggetto per ogni procedura, quindi i collegamenti tra loro in modo da poter tracciare come vanno le cose da una procedura all'altra è probabilmente un buon inizio.


4

Lo strumento RedGate SQL Dependency Tracker potrebbe essere utile. Può mostrarti graficamente quali oggetti del database (SP / viste / tabelle) dipendono l'uno dall'altro. L'ho usato mentre lavoravo con alcune tabelle con cui non avevo familiarità per determinare l'ordine in cui disabilitare i vincoli.

L'ho anche eseguito su tutto il database solo per divertimento ed era in modo TMI. Se riesci a focalizzarlo su aree specifiche del DB che non sono interdipendenti, potrebbe essere utile. L'albero delle dipendenze ha opzioni per organizzarsi visivamente usando algoritmi diversi e questo da solo vale una valutazione.

Tracing. Un'altra opzione è quella di scrivere le righe del registro all'inizio e alla fine delle stored procedure critiche. Ogni riga può includere una data, un "livello di dettaglio", un "contesto" migliore, "sottocontesto", nome del proc. e conteggi delle righe. Sarà probabilmente un disastro (pensa al registro eventi di Windows) ma forse utile in alcune sezioni. Se un SP viene utilizzato per eseguire effettivamente l'inserimento del registro e può essere attivato / disattivato facilmente senza molto carico aggiuntivo (ymmv).

Nota a margine, una volta ho caricato la stampante con la bella carta 11 x 17, ho trovato un bel font minuscolo e un po 'di rientro logico per riassumere un flusso complesso di dati / SP in ~ 5 pagine di alcuni pseudo-SQL. Sono abbastanza sicuro di aver finito per riferirmi solo un paio di volte e nessun altro ha osato avvicinarlo perché non era standard ed è difficile fidarsi di qualcosa che non è integrato e può non essere aggiornato. Il processo di documentazione ha costretto però a familiarizzare con il codice!


Ho valutato questo e un sacco di altri strumenti. Finora lo sto ancora facendo a mano. Così ho accettato la risposta che riflette ciò che ho fatto. Ma è fantastico.
Warren P

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.