Выполнить запрос с помощью powershell - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу выполнить запрос с помощью powershel. Я хочу сделать автоматическое развертывание, и PowerShell оказывается проблемой для меня. Как я совсем новичок в этом. Я нашел запрос, который может выполнить развертывание пакета служб SSIS, но мне нужно использовать команду powershell, поскольку я буду делать это из VSTS.

Запрос:

DECLARE @ProjectBinary AS varbinary(max)
DECLARE @operation_id AS bigint
SET @ProjectBinary = (SELECT * FROM OPENROWSET(BULK '<project_file_path>.ispac', SINGLE_BLOB) AS BinaryData)

EXEC catalog.deploy_project @folder_name = '<target_folder>',
    @project_name = '<project_name',
    @Project_Stream = @ProjectBinary,
    @operation_id = @operation_id out

Я попытался вставить код в следующем примере

$dataSource = “.\SQLEXPRESS”
$user = “user”
$pwd = “1234”
$database = “Test”
$connectionString = “Server=$dataSource;uid=$user; pwd=$pwd;Database=$database;Integrated Security=False;”
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
$query = “SELECT * FROM Person”
$command = $connection.CreateCommand()
$command.CommandText = $query
$result = $command.ExecuteReader()

Но это не сработало, я не уверен, что я делаю неправильно. Я также попытался закрыть соединение

$connection.Close() and nothing.

1 Ответ

0 голосов
/ 05 сентября 2018

Создать объект подключения

$sb = New-Object System.Data.Common.DbConnectionStringBuilder
$sb.set_ConnectionString($dbconnectionstring)
$serverName = $sb.server
$databaseName = $sb.database
$userName = $sb.'user id'
$password = $sb.password

У меня есть эта функция, которая полезна при проверке SQL-соединения

function Test-SQLConnection {    
    [OutputType([bool])]
    Param
    (
        [Parameter(Mandatory = $true,
            ValueFromPipelineByPropertyName = $true,
            Position = 0)]
        $ConnectionString
    )
    try {
        $sqlConnection = New-Object System.Data.SqlClient.SqlConnection $ConnectionString;
        $sqlConnection.Open();
        $sqlConnection.Close();
        return $true;
    }
    catch {
        return $false;
    }
}

Затем протестируйте соединение и используйте Invoke-Sqlcmd, поскольку вы сказали, что он не принимает $ cred. Можете ли вы попробовать передать $ userName $ pwd напрямую, как это?

if(Test-SQLConnection $dbconnectionstring)
Invoke-Sqlcmd -ServerInstance $serverName -Database $databaseName -Query $query -Username $username -Password $password  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...