问题标签 [invoke-sqlcmd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
56284 浏览

powershell - 'Invoke-Sqlcmd' 未被识别为 cmdlet 的名称

我们最近开始使用 SQL Server 2012 SP3 并使用 PowerShell 脚本构建 SQL Server 2012。我们的自动化过程需要在一个数据库上运行多个数据库脚本,在Invoke-Sqlcmd我发现这个问题之前,我发现它非常可靠。

当我Invoke-sqlcmd在最近安装了 SQL 服务器的系统上以 PowerShell 的调试模式使用一组适当的参数运行时,我没有问题。

PowershellCommand:调用-Sqlcmd -InputFile $sStrJBSPExecRolePath -ServerInstance $sStrSQLName -ErrorAction Stop

但是,当我在重建同一台服务器后通过 PowerShell 自动化脚本执行相同的查询时,我最终得到以下错误 

术语“Invoke-Sqlcmd”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

我在网上做了很多研究建议导入 SQLPS 等,所以为了测试我在我的脚本中添加了以下命令

即使将上述内容添加到脚本中,我仍然会遇到同样的错误。但是当我手动运行相同的脚本时,它运行得非常好。我不明白出了什么问题。

PowerShell 自动化脚本 - 此脚本安装 .Net Framework 3.5、SQL Server 2012、SQL Server 2012 SP3,然后加载我用来更改 SQL 设置(例如 SQL 的最大内存限制)的 SMO 程序集。

0 投票
1 回答
1228 浏览

sql-server - 调用 sqlcmd 到远程服务器问题:找不到文件

我正在尝试编写一个 PowerShell 脚本,该脚本将使用 invoke-sqlcmd 仅对一台远程服务器执行 tsql 查询。这些 tsql 查询很简单,例如备份/恢复数据库、创建用户等。下面是它的摘录:

我的脚本总是在这里中断。由于某些我无法理解的原因,invoke-sqlcmd 不使用变量“$LScltid”来解析它将找到 .sql 脚本的路径。

每次我必须运行它时,它都会将当前目录更改为 SQLERVER:\ 提供程序或其他导致脚本在此步骤失败的其他目录。

我这样做对吗?如果是这样,我应该如何调整命令以按预期执行。?

更新 忘了提一下,如果我使用硬编码的变量值运行脚本,我能够得到我需要的结果(在这种情况下,从设备恢复数据库)。

感谢您的反馈。

0 投票
1 回答
757 浏览

sql - Invoke-Sqlcmd 在 SQL 中不起作用

我在 SQL Powershell 中使用以下命令生成 SQL 返回的数据的 csv。

上述命令在 SQL Power Shell 中运行良好。但是当我尝试使用以下代码从 SQL 运行时

它给出了错误

'Invoke-Sqlcmd' 未被识别为内部或外部命令,

任何人都请帮助我从 SQL 运行命令。

谢谢

0 投票
3 回答
4543 浏览

powershell - PowerShell invoke-sqlcmd Get-ChildItem:无法调用方法。提供者不支持使用过滤器

使用 invoke-sqlcmd 将行插入表时发生了一个奇怪的错误。如果执行一次,整个脚本可以完美运行,但如果我再次运行它,它会失败并显示错误消息:Get-ChildItem:无法调用方法。提供者不支持使用过滤器。我测试了代码并注释掉了invoke-sqlcmd行,并且可以多次运行它而没有任何错误。我将invoke-sqlcmd放在一个函数中,它仍然出错,第一次成功运行后,它也会在PS命令行失败。

0 投票
1 回答
595 浏览

powershell - 如何在非交互模式下运行 Invoke-SQLCMD cmdlet

Invoke-SQLCMD通过 powershell 脚本 (.ps1) 执行时,cmdlet 不起作用

记录以下错误:

[错误]Windows PowerShell 处于非交互模式。阅读和提示功能不可用。[错误]进程以退出代码 0 完成,并有 1 个错误写入错误流。

当通过交互式窗口执行时,它要求用户确认。

Yes通过脚本执行时是否有解决方法来传递默认值?

0 投票
1 回答
135 浏览

sql - Invoke-Sqlcmd2 不会因错误而终止

有没有办法让函数Invoke-Sqlcmd2在失败时不终止脚本的其余部分?

即使此命令失败,我也希望脚本的其余部分继续运行。

我已经挖掘了代码,我的想法是它与-ErrorAction参数有关。

以下是脚本的第 488 行:

关于如何让这个命令“不终止”的任何想法?

解决方案: 感谢您的信息。我最终将 invoke-sqlcmd2 的错误处理部分包装在一个 try-catch 陷阱中。

0 投票
1 回答
605 浏览

powershell - Powershell Invoke-sqlcmd2 - 'GO' 附近的语法不正确

我收到Incorrect syntax near 'GO'. 我尝试了几种方法,其中一种奏效了。谁能给我解释一下?

invoke-sqlcmd2 的来源:https ://github.com/RamblingCookieMonster/PowerShell/blob/master/Invoke-Sqlcmd2.ps1

工作过:

没用:

0 投票
1 回答
130 浏览

powershell - 在多台计算机上调用 Sqlcmd 用于 serverproperty 版本的 powershell

我正在尝试运行以下命令:

输出仅显示:

我如何让它显示实际结果?

0 投票
1 回答
421 浏览

sql-server - 在 Powershell 中调用 sqlcmd 时如何指定区域/语言/文化设置?

当我GETDATE()在 SQL Server Management Studio 中执行返回日期时间(如 )的函数时,输出的格式为用户的“文化”(区域/语言设置)。但是,当通过 cmdlet 在 Powershell 中执行相同的查询时,Invoke-Sqlcmd输出将被格式化为美国日期格式(我假设这是不变的文化)。其他 Cmdlet 例如Get-Date返回 CurrentCulture 中的日期时间。

如何确保输出Invoke-Sqlcmd尊重 CurrentCulture 设置?

演示的最小代码示例

警告显示以美国格式显示的第一个日期时间和以指定格式显示的第二个日期时间

0 投票
2 回答
3167 浏览

powershell - 如何使用 AAD+MultiFactorAuth 调用-sqlcmd(或 sqlcmd.exe)

所有文档和帮助线程我都可以找到 Authentication=ActiveDirectoryIntegrated 的参考连接字符串,以通过 AAD 集成来访问 SQL。如果我使用的是 SSMS,我还可以选择“Active Directory Universal”,如果需要 MultiFactorAuth (MFA),它会给出提示。

我想使用 powershell 来调用-sqlcmd,甚至直接调用 sqlcmd.exe - 是否支持 MFA 流?我还能如何获取针对启用了 AAD 且启用了 MFA 的 SQLAzure 实例的命令行查询?

我已经看过https://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication,并且在应用 MFA 或当它意识到之前一切正常是时候重新认证和提示了。

如果有办法让我缓存凭据,那么 ActiveDirectoryIntegrated 通常可以工作,我只需要在它决定是时候强制执行 MFA 提示时重新验证和重新缓存,我也对此持开放态度。