2017-10-12 10 views
0

PowerShellを使用してSQLServerデータベースに接続しています。私のスクリプトは、SQLコードを実行して正常に動作しますが、定期的にそれは望ましい出力を生成し、それを再度実行して正常に動作しません。PowerShellとのSQLServer接続設定の問題ConnectionTimeoutプロパティ

$mySQLQuery = "SQL Query Here" 

$myDataSet = New-Object System.Data.DataSet "myDataResultSet" 
    $sqlConn = New-Object System.Data.SqlClient.SqlConnection("Data Source=myDataSource;Initial Catalog=myDBServer;Integrated Security = False; User ID = UserName; Password =PassWord;") 
    $SqlConn.ConnectionTimeout= 0 
    $adapter = New-Object System.Data.SqlClient.SqlDataAdapter($mySQLQuery, $sqlConn) 
$adapter.Fill($myDataSet) 
$SqlConn.Close() 

検索と読み取りの間に、接続タイムアウトと関係があることがわかりました。私は、デフォルトの30から0へのSQL接続タイムアウトを設定しようとしましたが、私はエラーを取得していますscirptを実行中に、以下の言って:

$sqlConn.ConnectionTimeout = 0 is read-only property. 

任意のアイデアを、私はここで間違ってやっているでしょうか?

ありがとうございます。

+0

感謝をコマンドタイムアウトを設定します。あなたの返信を肯定する。 –

答えて

1

これを修正する最も簡単な方法は、接続文字列に;Connection Timeout=60を追加することです。

$sqlConn = New-Object System.Data.SqlClient.SqlConnection('Connection Timeout=60') 
$sqlConn.ConnectionTimeout 
60 

0に設定したくない場合は、値段が非常に高い場合は300などを使用します。

+0

ありがとう、これを試し、それがどのように行くかを見てください。 –

0

は個人的に、私は動作しません提案下記の場合にはこれをしようとします...というよりも、接続、

$connection = New-Object System.Data.SqlClient.SqlConnection 
$connection.ConnectionString = "<yourconnectionstring>" 

$command = $connection.CreateCommand() 
$command.CommandText = "<yoursql>" 
$command.CommandTimeout = 0 

$results = $command.ExecuteReader() 

$table = New-Object System.Data.DataTable 
$table.Load($results) 

$connection.Dispose()