Sql server 2012 诊断从powershell运行的SQL

Sql server 2012 诊断从powershell运行的SQL,sql-server-2012,powershell-2.0,Sql Server 2012,Powershell 2.0,我正在尝试从Power Shell运行SQL,它位于我的windows 7 64位桌面上,远程数据库主机为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

我正在尝试从Power Shell运行SQL,它位于我的windows 7 64位桌面上,远程数据库主机为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 Server。找不到服务器或无法访问服务器。验证 实例名称正确且SQL Server配置为 允许远程连接。提供程序:SQL网络接口,错误:26 -定位在H:\test2.ps1:11 char:5处指定的服务器/实例时出错 +$Connection.Open + ~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified::[],MethodInvocationException +FullyQualifiedErrorId:SqlException

使用0个参数调用ExecuteReader时出现异常:ExecuteReader 需要开放且可用的连接。连接的电流 该州已关闭。在H:\test2.ps1:15字符:5 +$Reader=$Command.ExecuteReader + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified::[],MethodInvocationException +FullyQualifiedErrorId:InvalidOperationException

使用1个参数调用Load时出现异常:值不能为null。 参数名称:位于H:\test2.ps1:16 char:5的dataReader +$Datatable.Load$Reader + ~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified::[],MethodInvocationException +FullyQualifiedErrorId:ArgumentNullException

因此,第一个错误是$Connection.Open,但我不知道powershell有什么问题。我尝试在同一个DB主机上运行同一个SQL,但它确实返回了一个数字

我能得到一些帮助来知道我做错了什么吗?

以下代码:

$Server= ".\DB_HOST_NAME"
应该是:

$Server= "DB_HOST_NAME"

规范。\DB\u HOST\u NAME被解释为在本地框上运行的命名实例DB\u HOST\u NAME。

在建立与SQL Server的连接时,搜索此站点以查找与网络相关或特定于实例的错误。找不到服务器。这不是PowerShell问题。DBA检查并确认TCP/IP已启用,但命名管道已禁用。命名管道被禁用会是一个问题吗?