首页 > 解决方案 > 可以从其他计算机从 SSMS 连接到 SQL Server,但无法从 powershell 连接到网络中的 SQL Server

问题描述

我正在尝试从 powershell 连接到 sql server 并收到此错误

使用“0”参数调用“Open”的异常:“目标主体名称不正确。无法生成 SSPI 上下文。” 在 C:\Users\Musawwir\Downloads\远程访问 db.ps1:10 char:1 + $Connection.Open() + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified : ( [], MethodInvocationException + FullyQualifiedErrorId : 使用“1”参数调用“Fill”的 SqlException 异常:

我可以通过 SSMS 从其他机器连接到 SQL SERVER,但无法通过 powershell 连接,脚本也可以在本地机器上正常运行。

这是我正在使用的代码:

[string] $Server= "tcp:DESKTOP-J9UQ90E,1433"
[string] $Database = "Eshop"


[string] $SQLQuery= "[dbo].[usp_getCustomerAge]"


$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$Server';database='$Database';Connection Timeout=300;Integrated Security=TRUE;UID=ali;PWD=1234"
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
$Command.CommandText = $SQLQuery
$Command.CommandTimeout=500

$adp = New-Object System.Data.SqlClient.SqlDataAdapter $Command
$data = New-Object System.Data.DataSet 
$adp.Fill($data) | Out-Null


$data2 = ''
$emp = ''

foreach($Row in $data.Tables.Rows){
 [string]$C_name = $Row[0]

  $C_name
  $data2= $data2+ "|"+$C_name
  $C_name = $C_name+"|"
$C_name | out-file "d:\\test4.txt" -Append


}
$Connection.Close()

#$data2 | out-file "d:\\test4.txt"

标签: sql-serverpowershell

解决方案


用户 ali 无法访问存储过程 .. 将用户从 ali 更改为 sa 并将集成安全性设置为 false 解决了问题


推荐阅读