Сценарий Powershell для проверки синтаксических ошибок sql

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

Вы ищете онлайн-компилятор SQL, такой как rextester.com/l/sql_server_online_compiler

Vivek Kumar Singh 22.03.2019 08:52

Да . нужен синтаксический валидатор, написанный на powershell, который будет проверять синтаксические ошибки.

aishwarya murali 22.03.2019 09:10

Какую СУБД вы используете? Для решения SQL Server см. ранее вопрос.

vonPryz 22.03.2019 10:41

sql-сервер майкрософт

aishwarya murali 22.03.2019 10:53

Для этого вам нужно написать синтаксический анализатор SQL (независимо от того, какую СУБД вы используете), что явно способ выходит за рамки вопроса SO.

Ansgar Wiechers 22.03.2019 11:12
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
5
1 068
1

Ответы 1

Вы можете обернуть свой запрос 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

ПАРСЕОНЛИNOEXEC

Ссылка: https://stackoverflow.com/a/3276146/3759822

ОБНОВИТЬ :

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

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

Привет, ценю ваши усилия. В основном я пытаюсь проверить ошибки не через серверы sql или что-то еще. У меня есть сценарии sql в моей папке. Мне нужно, чтобы проверить каждый файл в папке.

aishwarya murali 22.03.2019 14:49

Да .. спасибо за это . Разве это невозможно без передачи данных базы данных и т.д.? Есть ли доступное пространство имен, которое будет работать для отображения ошибок?

aishwarya murali 25.03.2019 11:26

@aishwaryamurali вам нужно подключение к серверу базы данных SQL Server, чтобы проверить запрос, потому что он выполняется на стороне сервера. Что вы подразумеваете под «Есть ли доступное пространство имен, которое будет работать для отображения ошибок?» ?

Fourat 25.03.2019 11:29

Другие вопросы по теме