【发布时间】:2018-05-09 10:52:41
【问题描述】:
我正在尝试从 Power Shell(在我的 windows 7 64 位桌面上)运行 SQL,远程数据库主机是 MS SQL Server 2012。
代码是:
$Server= ".\DB_HOST_NAME"
$Database = "master"
$UserSqlQuery= $("select count(*) from [master].[sys].[some_table]")
# executes a query and populates the $datatable with the data
function ExecuteSqlQuery ($Server, $Database, $SQLQuery) {
$Datatable = New-Object System.Data.DataTable
$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;"
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
$Command.CommandText = $SQLQuery
$Reader = $Command.ExecuteReader()
$Datatable.Load($Reader)
$Connection.Close()
$Datatable
return $Datatable
}
# declaration not necessary, but good practice
$resultsDataTable = New-Object System.Data.DataTable
$resultsDataTable = ExecuteSqlQuery $Server $Database $UserSqlQuery
Write-Host "Statistic: " $resultsDataTable
Write-Host "Message: Transaction Delay is " $resultsDataTable.Rows.Count
当我从 Windows PowerShell 运行此程序时,我收到以下错误:
使用“0”参数调用“Open”的异常:“与网络相关的或 建立连接时发生特定于实例的错误 SQL 服务器。服务器未找到或无法访问。核实 实例名称正确且 SQL Server 配置为 允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定实例)”在 H:\test2.ps1:11 char:5 + $Connection.Open() +~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : SqlException
使用“0”参数调用“ExecuteReader”的异常:“ExecuteReader” 需要一个开放且可用的连接。连接的电流 状态已关闭。”在 H:\test2.ps1:15 char:5 + $Reader = $Command.ExecuteReader() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : InvalidOperationException
使用“1”个参数调用“Load”的异常:“值不能为空。 参数名称:dataReader" At H:\test2.ps1:16 char:5 + $Datatable.Load($Reader) + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ArgumentNullException
所以第一个错误是$Connection.Open(),但我对电源外壳一无所知,无法找出问题所在。我尝试在同一个数据库主机上运行相同的 SQL,它确实返回了一个数字。
我可以得到一些帮助以了解我在这里做错了什么吗?
【问题讨论】:
-
在此站点中搜索 在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到服务器。这不是 PowerShell 问题。
-
DBA 检查并确认 TCP/IP 已启用,但命名管道已禁用。那(命名管道被禁用)会是一个问题吗?
标签: sql-server-2012 powershell-2.0