【问题标题】:Invoke-Sqlcmd cmlet missing in Powershell core sqlserver module for linux用于 Linux 的 Powershell 核心 sqlserver 模块中缺少 Invoke-Sqlcmd cmlet
【发布时间】:2018-09-06 19:17:39
【问题描述】:

我在 Linux Ubuntu 16.04 上使用最新版本的 Powershell 内核。我正在尝试使用 powershell 的 invoke-sqlcmd cmdlet 查询 sql server 数据库。 (是的,我已经安装了 sqlserver 模块) 我收到一条错误消息,提示它找不到 cmdlet。当我安装 sqlserver 模块时,该命令在 windows powershell 中。 Screenshot of the same

invoke-sqlcmd 是否仅适用于 Windows?如果是,是否有另一种方法可以在 powershell 核心中实现相同的结果。

【问题讨论】:

  • 找到了解决方案。我没有使用 Invoke-sqlcmd,而是在调用命令中使用普通的 sqlcmd。效果很好。
  • 你能详细说明你是怎么做到的吗?
  • 因为“sqlcmd”仍然可以在托管数据库的服务器中工作。我选择了调用命令 cmdlet。在调用命令中,我调用了调用表达式命令,并将 sqlcmd 作为参数传递给调用表达式 cmdlet。
  • Invoke-Command Invoke-Expression "sqlcmd -i ./dropDatabaseScript.sql" 怎么样?也许您可以将其作为答案?有更多细节吗?
  • 确实以上对我有用!我把它分成四个部分。我有一个包含多个脚本的文件夹,我想运行 $files = "./*.sql"; $command = 'sqlcmd -i $_';(还添加了 dbname/user/psw 等)$expression = { Invoke-Expression $command }; Resolve-Path $files | ForEach-Object { Invoke-Command -ScriptBlock $expression};

标签: powershell-core


【解决方案1】:

使用 Powershell 内核(撰写本文时为 6.2.3),您可以像这样安装 sql server 模块:

Install-Module -Name SqlServer

然后你就可以拨打invoke-sqlcmd

如果您想了解更多信息:http://sqlvariant.com/2019/03/invoke-sqlcmd-is-now-available-cross-platform-in-the-sqlserver-module/

【讨论】:

  • 这也适用于我在 Windows 上运行 PowerShell Core。
【解决方案2】:

在 PowerShell Core 中,sqlserver 模块不会导出任何 Invoke-* cmdlet。但是,如果您已经在服务器端创建了视图,那么 Read-SQLTableDataRead-SQLViewData cmdlet 似乎以类似的方式工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多