如何验证T-SQL查询?(Ways to validate T-SQL queries?)

2019-08-02 13:42发布

我有机会到Access数据库,该数据库中都充满了TSQL查询的字段。 这些查询是由T-SQL的服务器上进行处理。 所以,当我写下这些SQL查询,并把它们放到由高端服务器中使用的现场,我无法验证语法的/ etc。 我可以创建在Access数据库的临时查询,但它是不一样的查询语言。 例如,访问将正确地使用IIF但TSQL不会(它会改为CASE )。

我没有到这台服务器与TSQL直接访问,是有办法,我可以验证我的TSQL查询(语法等)? 也许一个网络工具在线?

我要指出,我没有访问SQL服务器。 只有Access数据库和孤独。 我的理解是不会验证表名之类的,我不希望它。

Answer 1:

事实上,MattMc3答案,并FremenFreedom的回答的组合应该工作。

下载SQL Express的。

然后,声明以下存储过程:

create procedure IsValidSQL (@sql varchar(max)) as
begin
    begin try
        set @sql = 'set parseonly on;'+@sql;
        exec(@sql);
    end try
    begin catch
        return(1);
    end catch;
    return(0);
end; -- IsValidSQL

你可以测试一下:

declare @retval int;
exec @retval = IsValidSQL 'select iif(val, 0, 1) from t';
select @retval

或:

declare @retval int;
exec @retval = IsValidSQL 'select val from t';
select @retval

注意:这将赶上IIF()的问题。 它没有捕捉相关的表结构或柱状结构什么。 您需要为架构和一个稍微不同的方法(“选择顶0 *从()T”)woudl做到这一点。

你也许可以在网上做与SQL拨弄东西。 不过,我会建议具有数据库的本地副本。



Answer 2:

你可以分析你的T-SQL通过与执行它的SQL Server计算机上,以检查有效语法SET PARSEONLY ON作为脚本的第一行。 它不会验证表或字段名称,但会为您提供任何语法错误。



Answer 3:

数据多德(格特·布商行)介绍如何使用内置在这里你的应用程序的SQL Server T-SQL语法分析程序:

  • 前往皇冠珠宝

如果你想只检查是否安装了SQL语句的有效性 - 这可能是一个很好的路要走,而且它不需要的SQL Server本身将被安装在您运行单元测试。

这是一个基于.NET的方法,它不能-当然-如果你不使用实时数据库在数据库中验证对象名称-但它可以捕捉你的T-SQL语句的语法错误。



Answer 4:

您可以使用NOEXEC选项 :

SET NOEXEC ON

SELECT 1 AS Test

SET NOEXEC OFF


Answer 5:

在SQL Server Management Studio中快车(免费下载)能够连接到常规的SQL Server实例? 如果是这样,也许你可以有测试查询。 即使你无法连接到实际的服务器,你也许可以创造快速数据库的测试版,将至少可以让你捕捉语法和命名问题。



Answer 6:

如果他们是相当静态的,将它们转换成SQL数据库的存储过程,然后就打电话给他们的访问。



文章来源: Ways to validate T-SQL queries?