本文介绍了.NET 前端中的 SQL 存储过程验证(类似于 SSMS 中的解析选项)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的前端应用程序有一个文本区域,用户可以在其中输入存储过程.我想验证 SP,类似于选项解析"在 SSMS (Ctrl+F5) 中.

My front end application has a textarea where the user can enter the stored procedure. I want to validate the SP, similar to the option "Parse" in SSMS (Ctrl+F5).

我们有图书馆吗?或功能?完成这个?

Do we have any Library? or Function? to accomplish this?

提前致谢.

推荐答案

你可以使用 Microsoft.SqlServer.SqlManagementObjects 或 (SMO) 简称

You could use Microsoft.SqlServer.SqlManagementObjects or (SMO) in short

你需要打电话

var options = new Microsoft.SqlServer.Management.SqlParser.Parser.ParseOptions
{
  BatchSeparator = "GO",
  CompatibilityLevel = Microsoft.SqlServer.Management.SqlParser.Common.DatabaseCompatibilityLevel.Version140 // depedning on the compatibilty level of your database.
};
var output = Microsoft.SqlServer.Management.SqlParser.Parser.Parser.Parse(inputString, options);

if(output.Errors.Any())
{
   // handle errors
}

这与执行 Parse 命令时从 SSMS 执行的代码相同.

This is the same code that is executed from SSMS when you execute the Parse command.

为什么不应该在 SQL 服务器上执行此操作:

Why you shouldn't do this on a SQL server:

  • SQL 注入
  • 不要依赖 SQL Server
  • 不要用不适合 SQL Server 的东西烧掉宝贵的 SQL Server CPU.(SQL Server 是基础架构中昂贵的一部分,在 C# 中运行它的成本要低得多.)
  • 使用自定义兼容性级别,独立于 SQL Server 配置.
  • options.TransactSqlVersion 如果要解析 Azure SQL,也可以使用
  • SQL Injection
  • Don't be dependent on a SQL Server
  • Don't burn precious SQL Server CPU with things that are not ment for SQL server. (SQL server is an expensive part of your infrastructure running it in C# is way cheaper.)
  • Use custom compatibility levels, independent of the SQL Server configuration.
  • options.TransactSqlVersion could also be used if you want to parse for Azure SQL

这篇关于.NET 前端中的 SQL 存储过程验证(类似于 SSMS 中的解析选项)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 19:16