通过 PowerShell 连接到 SQL

Posted

技术标签:

【中文标题】通过 PowerShell 连接到 SQL【英文标题】:Connecting to SQL via PowerShell 【发布时间】:2020-01-23 11:30:00 【问题描述】:

我正在尝试 Server。我尝试使用下面的代码,但我不断收到同样的错误。谁能解释为什么会这样?

param
(   
    [Parameter(Mandatory)]  #servername
    [string]$SQLServer,

    # [Parameter(Mandatory)]  #database
    # [string]$SQLDBName,

    [Parameter(Mandatory)]  #user ID
    [string]$uid

)

$pwd = ConvertTo-SecureString "xxx"-AsPlainText -Force #heslo
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; User ID= $uid; Password= $pwd" 
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = 'StoredProcName'
$SqlCmd.Connection = $SqlConnection 
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet) 
$SqlConnection.Close() 

错误如下所示:

使用“1”参数调用“Fill”的异常:“用户“目标”登录失败。” 在 C:\Users\salema\Documents\SQL.ps1:24 char:1 + $SqlAdapter.Fill($DataSet) + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : SqlException

【问题讨论】:

错误非常明显。用户“目标”是否具有适当的 SQL 权限来登录/执行操作? 是的,它只是为此目的而制作的测试帐户。 【参考方案1】:

需要调用Open()方法打开SQL连接。尝试添加

$pwd = ConvertTo-SecureString "xxx"-AsPlainText -Force #heslo
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; User ID= $uid; Password= $pwd" 

# Open the SQL connection
$SqlConnection.Open()

【讨论】:

以上是关于通过 PowerShell 连接到 SQL的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Powershell 和 PSSessionConfiguration 远程连接到 Exchange 服务器

找不到引用合同的默认端点元素:通过 Powershell cmdlet 连接到 WCF 端点

如何在 ssms 中更改用户通过 powershell 连接到数据库引擎的权限?

无法通过 Powershell 或 Visual Studio 连接到受保护的 Azure Service Fabric 群集

通过powershell Enter-PSSession连接到SQL Server 2012(使用Windows身份验证)

powershell PowerShell:连接到SQLite数据库