Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Mã xác thực SQL Scripts

Nếu bạn đang tạo một công cụ cho phép người dùng nhập một số mã sql bằng tay và bạn muốn xác thực mã đã nhập bằng mã C # trước khi thực thi trên máy chủ sql, bạn có thể tạo một phương thức như sau:

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

Kể từ năm 2018 và các phiên bản cơ sở dữ liệu mới, đây có thể là phiên bản mới hơn:

using Microsoft.SqlServer.TransactSql.ScriptDom;

(tải xuống với 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách truy xuất tên trường từ bảng tạm thời (SQL Server 2008)

  2. Làm thế nào để lấy ngày đầu tiên và ngày cuối cùng của năm hiện tại?

  3. Microsoft Access so với SQL Server

  4. Hướng dẫn về SQL (DDL, DML) về ví dụ về phương ngữ MS SQL Server

  5. Chuyển đổi 'datetime' thành 'time' trong SQL Server (Ví dụ T-SQL)