用于验证sql语法错误的Powershell脚本

用于验证sql语法错误的Powershell脚本,sql,powershell,Sql,Powershell,是否存在检测sql语法错误的powershell语法?例如,对于存储过程、SQL查询、函数等,您可以使用PARSEONLY或NOEXEC包装查询,下面是一个示例: $Server = "SERVER" $Database = "Database" $UserId = "USERID" $Password = "PASSWORD" $QueryToTest= "SELECT * FROM NO_TABLE !!" Function Check-Query-Syntax { Param(

是否存在检测sql语法错误的powershell语法?例如,对于存储过程、SQL查询、函数等,您可以使用
PARSEONLY
NOEXEC
包装查询,下面是一个示例:

$Server = "SERVER"
$Database = "Database"
$UserId = "USERID"
$Password = "PASSWORD"
$QueryToTest= "SELECT * FROM NO_TABLE !!"

Function Check-Query-Syntax
{
    Param(
        [Parameter(Mandatory = $true)][string]$query
    )
    try
    {
        $sb = New-Object -TypeName "System.Text.StringBuilder"
        [void]$classpath.AppendLine("SET NOEXEC ON;")
        [void]$classpath.AppendLine($query)
        [void]$classpath.AppendLine("SET NOEXEC OFF;")
        $Connection = New-Object System.Data.SQLClient.SQLConnection
        $Connection.ConnectionString = "server='$Server';database='$Database';User Id='$UserId';Password='$Password';trusted_connection=true;"
        $Connection.Open()
        $Command = New-Object System.Data.SQLClient.SQLCommand
        $Command.Connection = $Connection
        $Command.CommandText = $SQLQuery
        $Reader = $Command.ExecuteNonQuery()
        $Connection.Close()
    }
    catch
    {
        Write-Host "Some error"
        throw
    }
}

Check-Query-Syntax $QueryToTest

参考:

更新

如果要检查
.sql
文件中的查询,请从包含脚本的目录中执行脚本

Get-ChildItem .\*.sql | Select -ExpandProperty FullName | ForEach { $query = (Get-Content -Path $_); Check-Query-Syntax $str }

您正在寻找像Yes这样的在线SQL编译器。需要一个在powershell中编写的语法验证器来验证语法错误。您使用的是哪种RDBMS?有关SQL Server解决方案,请参阅。Microsoft SQL Server您需要为此编写SQL解析器(无论您使用的是什么DBMS),这显然超出了SO问题的范围。您好,感谢您的努力。基本上,我是在尝试检查错误,而不是通过sql Server或其他什么。我的文件夹中有sql脚本。我需要它来检查文件夹中的每个文件。是的。。谢谢你。如果不传递数据库详细信息等,是否不可能?是否有可用的名称空间可以显示错误?@aishwaryamurali您需要连接到SQL Server数据库服务器才能验证查询,因为查询是在服务器端完成的。您所说的“是否有任何可用的名称空间能够以某种方式显示错误”是什么意思?