2017-08-09 16 views
0

私はPowerShellを使用して接続することにより、SQLサーバーからテーブルの数を取得しようとしていますが、私は以下のエラーメッセージを取得していますが、私はちょうど行う場合は代わりに、カウントのテーブルの上に、その後選択同じコードが結果を返していますので、この問題の解決策が得られていないことをお勧めします。のPowershell SQLサーバーへの接続とカウントエキス

エラーメッセージ:

例外「1」引数(複数可)を「塗りつぶし」を呼び出す:「実行タイムアウト は、期限切れ前 操作が完了するか、サーバーが応答しないに経過タイムアウト時間を。 " + $ DataAdapter.Fill($データセット) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [] 、MethodInvocationException + FullyQualifiedErrorId:SQLExceptionが

スクリプト:

[string] $Server= "Server_nm" 
    [string] $Database = "DB_nm" 
    [string] $UserSqlQuery = $("SELECT count(1) AS cnt FROM [tbl]") 


##$resultsDatatable = ExecuteSqlQuery $Server $Database $UserSqlQuery 

function GenericSqlQuery ($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 

$DataAdapter = new-object System.Data.SqlClient.SqlDataAdapter $Command 
$Dataset = new-object System.Data.Dataset 
$DataAdapter.Fill($Dataset) 
$Connection.Close() 

return $Dataset.Tables[0] 
} $resultsDatatable = GenericSqlQuery $Server $Database $UserSqlQuery 
#validate we got data 

Write-Host ("The table contains: " + $resultsDatatable.Rows.Count + " rows") 

答えて

0

代わりInvoke-Sqlcmd機能を使用することができます。

# initialize Variables 
[string] $Server= "Server_nm" 
[string] $Database = "DB_nm" 
[string] $UserSqlQuery = $("SELECT count(1) AS cnt FROM [tbl]") 

# Invoke-SqlCmd 
$resultsDatatable = Invoke-Sqlcmd -ServerInstance $Server -Database $Database -Query $UserSqlQuery 

# validate we got data 
Write-Host ("The table contains: " + $resultsDatatable.cnt + " rows") 
関連する問題