Comment analyser Sql Script avec Dapper? (SET PARSEONLY ON + Dapper)

c# dapper parsing sql sql-server

Question

Je veux vérifier et analyser le script SQL alors j'ai cherché cela et j'ai trouvé quelque chose comme ça

SET PARSEONLY ON 
SELECT * FROM [dbo].[Categories]  --Query To Parse

J'utilise Dapper, donc j'écris la méthode comme ça

 public bool IsValidSqlScript(string sqlScript)
    {
        using (SQLConnection)
        {
            using (SQLTransaction)
            {
                var status = SQLConnection.Execute("SET PARSEONLY ON " + sqlScript);
                // OR
                // var status = SQLConnection.Query("SET PARSEONLY ON " + sqlScript);
            }
        }
        return status;
    }

Comment puis-je obtenir le statut et s'il existe des erreurs obtenir la liste des erreurs aussi ???

SET PARSEONLY ON
SELECT * FR OM [dbo].[Categories]  --Query To Parse

>>> false
>>> Msg 102, Level 15, State 1, Line 2 Incorrect syntax near 'FR'.

Réponse populaire

Vous êtes proche, mais vous avez un problème avec votre variable de statut. Vous le déclarez dans votre instruction SQLTransaction à l'aide de l'instruction, puis vous essayez de le renvoyer hors de cette portée.

Vous voudrez utiliser un bloc try / catch pour exécuter votre requête, de cette façon vous saurez quand le sqlScript est valide ou non. Si vous entrez dans le bloc catch, il est invalide et si vous ne le faites pas, il est valide.

Le code devrait ressembler à ce qui suit ...

public bool IsValidSqlScript(string sqlScript)
{
    bool status;

    try
    {
        using (SQLConnection)
        {
            using (SQLTransaction)
            {
                SQLConnection.Execute("SET PARSEONLY ON " + sqlScript);                    
            }
        }
        status = true;
    }
    catch(Exception e)
    {
        status = false;
    )

    return status;
}


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi