我正在尝试学习 PowerShell 中的 Sqlcmd 实用程序来运行 SQL 查询,特别是用于数据库管理。
使用
Version 15.0.1300.359 NT
但是我很困惑,
Sqlcmd
和Invoke-Sqlcmd
有什么区别?
为什么这个命令有效:
Invoke-Sqlcmd -ServerInstance myinstance -Database AdventureWorks2017 "select top 3 * from [Person].[BusinessEntity]"
这个不起作用:
Invoke-Sqlcmd -S myinstance -d AdventureWorks2017 "select top 3 * from [Person].[BusinessEntity]"
通过查询帮助,我可以清楚地看到我应该能够使用所有这些变量:
Invoke-SqlCmd
是 SqlServer
模块sqlcmd
是一个 Microsoft 实用程序如果您正在使用 PowerShell 脚本编写,我建议尽可能使用该模块。
Invoke-SqlCmd
将输出对象,这肯定更容易操作。
-S 在invoke-sqlcmd 中不明确,在引用您的服务器/实例时使用-ServerInstance。 SQLCMD 使用与 Invoke-Sqlcmd 不同的参数/选项集,并且无法使用 sqlcmd 中的大多数缩写。使用 Microsoft Invoke-Sqlcmd 参考中所述的设置:https://learn.microsoft.com/en-us/powershell/module/sqlserver/invoke-sqlcmd?view=sqlserver-ps