invoke-sqlcmd 结果根据安装的 SqlServer 模块而不同

问题描述 投票:0回答:1

我正在运行一个 PS 脚本,该脚本加载 SqlServer 模块,然后调用 Invoke-SqlCmd。 Invoke-SqlCmd 正在使用存储过程调用脚本。

我最初使用 21.1.18256 开发脚本。一切正常,但 v21.1.18256/Invoke-SqlCmd 不适用于 -TrustServerCertificate。我发现此选项在此版本中不可用,因此决定升级以能够使用此参数。

然后我升级到v22.1.1。我测试并发现 Invoke-SqlCmd 在此版本中运行相同的存储过程时反应不同。运行完全相同的脚本,该过程不起作用。我以交互方式运行它,它看到它调用该过程并表明它正在工作。我检查了数据库,发现没有插入任何记录。

我在 SQL 脚本中有一个 Try/Catch、Begin/End Tran。我删除了 Begin/End Tran,存储过程的反应有所不同。现在它按预期进行插入,但只是部分插入。在我预计有 100 条记录的表中,我只得到 25 条记录。

我尝试过v22.0.59,结果与v22.1.1相同。当我切换回 v21.1.18256 时,一切正常,并且记录计数符合预期。我目前正在切换到本机 sqlcmd.exe,它正在按预期工作。

不确定是否有人以前见过这个,或者我做错了什么。

我使用的是Windows2019/SqlServer2019/PS5.1

sql-server powershell invoke-sqlcmd
1个回答
0
投票

参见:PowerShell:带有 Get-Credential 的 invoke-sqlcmd 不起作用

并且:Invoke-Sqlcmd 在一个桌面上工作,在另一个桌面上失败

这些可能可以解决您遇到的问题:

  • 并非所有命令都能正确使用
    -Credential
  • 引用:“从根本上来说 - 不幸的是 - 有两个 - 技术上不同的 Invoke-SqlCmd cmdlet”
  • 来自过时的 SQLPS 模块的过时的 Invoke-SqlCmd 命令。
  • 后继模块中的当前 Invoke-SqlCmd 命令,SQLServer

在此处安装正确的 SQL Server 模块:https://learn.microsoft.com/en-us/sql/powershell/download-sql-server-ps-module?view=sql-server-ver16

© www.soinside.com 2019 - 2024. All rights reserved.