Выполнить сценарий SQL в хранилище данных SQL Azure - PullRequest
0 голосов
/ 20 ноября 2018

В основном я пытаюсь выполнить сценарий SQL, который вставляет около 50 представлений в хранилище данных Azure, используя сценарий Powershell.Но по какой-то причине не нравится синтаксис, который я использую.

Например:

CREATE VIEW XX.FirstView 
AS 
     SELECT bookings.Activity 
     FROM XX.FirstTable bookings
GO

CREATE VIEW XX.SecondView 
AS 
     SELECT books.ID 
     FROM XX.SecondTable books

Если я запускаю его непосредственно в хранилище данных SQL Server, похоже, работает нормально, но при запуске из Powershell он жалуется на синтаксическую ошибку.

Есть какой-нибудь синтаксис SQL, который я должен добавить / изменить, который я не рассматриваю?

Синтаксическая ошибка

Сценарий PowerShell:

function Invoke-SQLDestination {
param([string] $sqlCommand = "")
    $sqlCommand.ToString()
    $connectionStringDestination = "XXXXXXXX"

    $connection = new-object system.data.SqlClient.SQLConnection($connectionStringDestination)
    $command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
    $connection.Open()

    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
    $dataset = New-Object System.Data.DataSet

    $adapter.Fill($dataSet) 

    $connection.Close()
    $dataSet.Tables
}


    $sqlscript = Get-Content ./SqlViewCreate.sql | Out-String
    Invoke-SQLDestination $sqlscript

Спасибо!

1 Ответ

0 голосов
/ 21 ноября 2018

Ошибка связана с «go» в сценарии sql, который не может быть распознан используемыми вами сценариями powershell.

Вы можете внести небольшие изменения в ваш powershell, когда он читает «go»,выполнить вышеуказанные сценарии SQL.

Код, как показано ниже:

function Invoke-SQLDestination {
param([string] $sqlCommand = "")
    #$sqlCommand.ToString()

    $commandTxt = @(Get-Content -Path $sqlCommand)
    foreach($txt in $commandTxt)
    {
    if($txt -ne "Go")
    {
    $SQLPacket += $txt +"`n"
    }
    else
    {
    $connectionStringDestination = "xxxx"
    Write-Host $SQLPacket
    $connection = new-object system.data.SqlClient.SQLConnection($connectionStringDestination)
    $command = new-object system.data.sqlclient.sqlcommand($SQLPacket,$connection)
    $connection.Open()

    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
    $dataset = New-Object System.Data.DataSet

    $adapter.Fill($dataSet) 

    $connection.Close()
    $dataSet.Tables

    $SQLPacket =""

    }
    }
}

    # here pass the sql file path
    $sqlscript = "D:\azure sql\test.sql"
    Invoke-SQLDestination $sqlscript

Ниже приведен мой файл sql:

create view v1
as
select name from student
go

create view v2
as
select name from student
go

create view v3
as
select name from student
go

Результат теста: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...