Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Код за валидиране на SQL скриптове

Ако създавате инструмент, който позволява на потребителя да въведе някакъв sql код на ръка и искате да потвърдите кода, въведен с C# код преди изпълнение на sql сървър, можете да създадете метод като този:

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 -Версия 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. Създайте база данни в SQL Server (T-SQL)

  2. Променете формата на датата и часа по подразбиране в една база данни в SQL Server

  3. 5 начина да коригирате грешката „Деление на нула“ в SQL Server (Msg 8134)

  4. Atomic UPSERT в SQL Server 2005

  5. Има ли комбинация от LIKE и IN в SQL?