Sql server 2012 诊断从powershell运行的SQL
我正在尝试从Power Shell运行SQL,它位于我的windows 7 64位桌面上,远程数据库主机为MS SQL Server 2012 代码是: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
$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已启用,但命名管道已禁用。命名管道被禁用会是一个问题吗?