【发布时间】:2021-09-25 04:51:23
【问题描述】:
由于某种奇怪的原因,我没有 sqlcmd.exe 或 sqlps,尽管我从 PSGallery 安装了 sqlserver 模块,所以我不确定这是否让我感到困惑。
我遇到的主要问题是我似乎无法使用invoke-sqlcmd 连接 SQL Server,即使我能够使用 SSMS 连接到它。
这是 SQL Server 容器:
e1cfd6032947 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 21 hours ago Up 21 hours 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp mystifying_keller
我通过 SSMS 连接到它,但由于某种原因,它无法通过带有 invoke-sqlcmd 小程序的 powershell 5 工作,令人讨厌的是它甚至没有给我一个错误:
PS C:\> Invoke-Sqlcmd -ServerInstance 127.0.0.1:1433 -Database db1
PS C:\> Invoke-Sqlcmd -ServerInstance '127.0.0.1:1433' -Database db1
PS C:\> Invoke-Sqlcmd -ServerInstance '127.0.0.1,1433' -Database db1
PS C:\> Invoke-Sqlcmd -ServerInstance '127.0.0.1,1433' -Database db1 -Username 'SA' -Password 'yourStrong(!)Password'
PS C:\> Invoke-Sqlcmd -ServerInstance '127.0.0.1,1433' -Database db1 -Username 'SA' -Password 'yourStrong(!)Password' -Query "PRINT 'This is output'"
PS C:\> Invoke-Sqlcmd -ServerInstance '127.0.0.1,1433' -Database db1 -Username 'SA' -Password 'yourStrong(!)Password' -Query "SELECT * FROM Users;"
PS C:\>
(是的,db1 是我在 SSMS 中创建的测试数据库,以防万一数据库确实需要)。
我真的不知道我做错了什么,或者为什么它不起作用:/
【问题讨论】:
-
您忘记包含要运行的查询:
Invoke-Sqlcmd -ServerInstance '127.0.0.1:1433' -Database db1 -Query "SELECT @@SERVERNAME;" -
我确实使用了查询,但它没有返回任何内容,我认为有问题,而不是表是空的......我是个白痴
-
避免这种情况的一个好方法是使用使用系统数据库的查询,例如
SELECT @@SERVERNAME、SELECT @@VERSION等。
标签: sql-server powershell