【问题标题】:Can't connect to database using PowerShell无法使用 PowerShell 连接到数据库
【发布时间】:2018-12-04 22:04:39
【问题描述】:

我在我的 PowerShell 脚本中遇到了 sqlps 的问题。我正在尝试从表中选择行并将它们保存到 .csv 文件中。

查询是

$TABLE="events"

Import-Module sqlps
$SQLquery='SELECT * FROM dbo.$TABLE'
$result=invoke-sqlcmd -query $SQLquery -HostName LOCALHOST -Password test -Username test
$result |export-csv c:\TEST.csv -notypeinformation

我收到此错误:

invoke-sqlcmd : Login failed for user 'test'.
At line:6 char:9
+ $result=invoke-sqlcmd -query $SQLquery -HostName LOCALHOST -Password  ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Invoke-Sqlcmd], SqlException
    + FullyQualifiedErrorId : SqlExectionError,Microsoft.SqlServer.Management. 
   PowerShell.GetScriptCommand

invoke-sqlcmd : 
At line:6 char:9
+ $result=invoke-sqlcmd -query $SQLquery -HostName LOCALHOST -Password  ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Invoke-Sqlcmd], ParserException
    + FullyQualifiedErrorId : ExecutionFailureException,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

有人可以帮忙吗?

【问题讨论】:

  • 看一下Sql Server的日志文件。它将包含更详细的错误消息。
  • $SQLQuery 变量的单引号意味着它实际上是在查找 $TABLE,而不是我认为您的意思的 events 表。哦,密码可能是错误的,我没看错!
  • 通过添加Write-Host $SQLQuery 进行检查,这将显示变量包含的内容
  • 在哪里指定要连接的数据库?您是否连接到特定的 SQL Server 实例?
  • 数据库在哪里?您正在运行的示例假定数据库位于运行代码的同一台机器上。如果这是正确的,那么凭据一定是错误的。正如@DavidBrabant 所说,通常需要-Database 开关

标签: powershell sqlps


【解决方案1】:

所以主要问题是查询需要在 "" 引号中而不是 '' 引号中,并且需要告知服务器明确允许 Microsoft 帐户登录和 SQL 登录。即使您有用于 sql 登录的用户设置。该选项位于属性/安全/服务器身份验证下。

如果有人像我一样遇到这个初学者问题,我会在这里留下这个答案。感谢社区的帮助,让这个问题如此迅速地得到解决

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2018-05-28
    • 2021-01-20
    • 2017-03-12
    • 2013-11-27
    相关资源
    最近更新 更多