Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kode untuk memvalidasi Skrip SQL

Jika Anda membuat alat yang memungkinkan pengguna memasukkan beberapa kode sql dengan tangan dan Anda ingin memvalidasi kode yang dimasukkan menggunakan kode C# sebelum dieksekusi di server sql, Anda dapat membuat metode seperti ini:

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;
        }
}

Pada 2018 dan versi database baru, ini mungkin versi yang lebih baru:

using Microsoft.SqlServer.TransactSql.ScriptDom;

(unduh dengan npm:PM> Instal-Paket Microsoft.SqlServer.TransactSql.ScriptDom -Versi 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan PRINT dalam T-SQL

  2. Apakah urutan Sql JOIN mempengaruhi kinerja?

  3. Konversi Nomor Bulan ke Fungsi Nama Bulan di SQL

  4. Pilih nilai dari bidang XML di SQL Server 2008

  5. Tidak Ada Dukungan untuk OVER di MS SQL Server 2005?