Командлет Invoke-Sqlcmd отсутствует в модуле ядра sqlserver Powershell для Linux

Я использую последнюю версию ядра Powershell в Linux Ubuntu 16.04. Я пытаюсь запросить базу данных sql-сервера с помощью командлета PowerShell invoke-sqlcmd. (Да, я установил модуль sqlserver) Я получаю сообщение об ошибке, в котором говорится, что не удается найти командлет. Команда находится в Windows PowerShell, когда я устанавливаю модуль sqlserver. Скриншот того же экрана

Invoke-sqlcmd работает только в Windows? Если да, есть ли другой способ добиться того же результата в ядре PowerShell.


person Neel    schedule 06.09.2018    source источник
comment
Нашел решение. Вместо Invoke-sqlcmd я использую простой sqlcmd внутри команды invoke. Хорошо работает.   -  person Neel    schedule 07.09.2018
comment
не могли бы вы рассказать, как вы это сделали?   -  person craig    schedule 02.11.2018
comment
Поскольку sqlcmd по-прежнему будет работать на сервере, на котором размещена база данных. Я выбрал командлет invoke-command. внутри команды invoke-command я вызвал команду invoke-expression и передал sqlcmd в качестве параметра командлету invoke-expression.   -  person Neel    schedule 11.11.2018
comment
Что нравится Invoke-Command Invoke-Expression "sqlcmd -i ./dropDatabaseScript.sql"? Может быть, это можно было бы сформулировать как ответ? с более подробной информацией?   -  person Gustav    schedule 13.11.2018
comment
Действительно, выше сработало и для меня! Я разделил его на четыре части. У меня была папка с несколькими скриптами, которые я хотел запустить $files = "./*.sql"; $command = 'sqlcmd -i $_'; (также добавил dbname / user / psw и т. Д.) $expression = { Invoke-Expression $command }; Resolve-Path $files | ForEach-Object { Invoke-Command -ScriptBlock $expression};   -  person Gustav    schedule 13.11.2018


Ответы (2)


С ядром Powershell (6.2.3 на момент написания) вы можете установить серверный модуль sql следующим образом:

Install-Module -Name SqlServer

а затем вы можете позвонить invoke-sqlcmd

Если вы хотите узнать об этом больше: http://sqlvariant.com/2019/03/invoke-sqlcmd-is-now-available-cross-platform-in-the-sqlserver-module/

person Yepeekai    schedule 09.10.2019
comment
Это также помогло мне запустить PowerShell Core в Windows. - person Wallace Kelly; 10.03.2021

В PowerShell Core модуль sqlserver не экспортирует ни один из Invoke-* командлетов. Однако есть командлеты Read-SQLTableData и Read-SQLViewData, которые работают аналогичным образом, если вы уже создали представления на стороне сервера.

person Steven Buehler    schedule 23.02.2019