Posso ottenere informazioni su una query SQL SELECT (come le tabelle a cui accede) usando C #?

1

L'applicazione c # con cui sto lavorando esegue molte query T-SQL SELECT archiviate come stringhe in un database.

Queste query riguardano quasi tutti i dati di selezione e l'unione con diverse tabelle all'interno del database.

Alcune combinazioni non dovrebbero essere consentite, ad es. la colonna 1 dalla tabella X non deve essere restituita se la tabella Y viene unita sulla tabella X. Un esempio più semplice potrebbe essere "Non includere mai dati dalla tabella Z"

Ci sono molte di queste regole e al momento è compito dell'autore dell'SQL verificare che i dati restituiti non violino nessuna di queste regole.

Non posso modificare il database in alcun modo.

Quali opzioni ci sono per me per determinare se una query specifica violi una di queste regole?

È possibile determinare quali tabelle / colonne sono accessibili in una query?

Avrei bisogno che la soluzione fosse affidabile, ho considerato l'analisi dell'SQL, ad es. utilizzando un Regex, ma penso che questo sia in qualche modo inferiore al requisito "affidabile".

    
posta mark_h 06.03.2018 - 16:02
fonte

1 risposta

1

Se è necessario analizzare specificamente T-SQL, si può prendere in considerazione l'uso della libreria SMO (SQL Server Management Objects) di Microsoft: SQL Server Management Objects

Spazio dei nomi pertinente: Microsoft.SqlServer.Management.SqlParser.Parser

    
risposta data 11.03.2018 - 14:34
fonte

Leggi altre domande sui tag