sql >> データベース >  >> RDS >> Sqlserver

SQLスクリプトを検証するためのコード

    ユーザーがSQLコードを手動で入力できるツールを作成していて、SQLサーバーで実行する前にC#コードを使用して入力したコードを検証する場合は、次のようなメソッドを作成できます。

    using Microsoft.Data.Schema.ScriptDom;
    using Microsoft.Data.Schema.ScriptDom.Sql;
    
    public class SqlParser
    {
            public List<string> Parse(string sql)
            {
                TSql100Parser parser = new TSql100Parser(false);
                IScriptFragment fragment;
                IList<ParseError> errors;
                fragment = parser.Parse(new StringReader(sql), out errors);
                if (errors != null && errors.Count > 0)
                {
                    List<string> errorList = new List<string>();
                    foreach (var error in errors)
                    {
                        errorList.Add(error.Message);
                    }
                    return errorList;
                }
                return null;
            }
    }
    

    2018年および新しいデータベースバージョンの時点で、これは新しいバージョンである可能性があります:

    using Microsoft.SqlServer.TransactSql.ScriptDom;
    

    (npmでダウンロード:PM> Install-Package Microsoft.SqlServer.TransactSql.ScriptDom -Version 14.0.3811.1)

    public bool IsSQLQueryValid(string sql, out List<string> errors)
    {
        errors = new List<string>();
        TSql140Parser parser = new TSql140Parser(false);
        TSqlFragment fragment;
        IList<ParseError> parseErrors;
    
        using (TextReader reader = new StringReader(sql))
        {
            fragment = parser.Parse(reader, out parseErrors);
            if (parseErrors != null && parseErrors.Count > 0)
            {
                errors = parseErrors.Select(e => e.Message).ToList();
                return false;
            }
        }
        return true;
    }
    


    1. ASP.NETコアアプリケーションをSQLServerのローカルインスタンスに接続する

    2. OracleからPostgreSQLへ—カーソルとltree

    3. 高速テストのためにPostgreSQLを最適化する

    4. SQLServerでのOracleのCONNECTBYPRIORのシミュレーション