Я пытаюсь запустить SQL из Power Shell (который находится на моем 64-битном рабочем столе Windows 7), а удаленный хост базы данных - 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, я получаю следующие ошибки:
Исключение, вызывающее "Open" с аргументом (ами) "0": "Сетевой или
при установке соединения с
SQL Server. Сервер не найден или не был доступен. проверить
что имя экземпляра правильное и что SQL Server настроен на
разрешить удаленные подключения. (поставщик: сетевые интерфейсы SQL, ошибка: 26
- Ошибка при поиске сервера / указанного экземпляра) "В H: \ test2.ps1: 11 char: 5
+ $ Connection.Open ()
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId: SqlException
Исключение, вызывающее "ExecuteReader" с аргументом (ами) "0": "ExecuteReader
требуется открытое и доступное соединение. Ток соединения
состояние закрыто. "В H: \ test2.ps1: 15 char: 5
+ $ Reader = $ Command.ExecuteReader ()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId: InvalidOperationException
Исключение, вызывающее "Load" с аргументом (ами) "1": "Значение не может быть нулевым.
Имя параметра: dataReader "At H: \ test2.ps1: 16 char: 5
+ $ Datatable.Load ($ Reader)
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId: ArgumentNullException
Итак, первая ошибка в $Connection.Open()
, но я ничего не знаю о Power Shell, чтобы выяснить, что не так. Я попытался запустить тот же SQL на том же хосте БД, и он возвращает число.
Могу ли я получить помощь, чтобы узнать, что я здесь делаю не так?