Сценарий Powershell для проверки ошибок синтаксиса SQL - PullRequest
0 голосов
/ 22 марта 2019

Есть ли синтаксис powershell, который обнаруживает ошибки синтаксиса sql?Например, для хранимых процедур, SQL-запросов, функций и т. Д.

1 Ответ

1 голос
/ 22 марта 2019

Вы можете заключить запрос в 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

PARSEONLY NOEXEC

Справка: https://stackoverflow.com/a/3276146/3759822

ОБНОВЛЕНИЕ :

Если вы хотите проверить запросы в файлах .sql, выполните сценарий из каталога, содержащего сценарии * 1020.*

Get-ChildItem .\*.sql | Select -ExpandProperty FullName | ForEach { $query = (Get-Content -Path $_); Check-Query-Syntax $str }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...