2017-10-12 53 views
0

我使用PowerShell連接到SQLServer數據庫。我的腳本運行SQL代碼工作正常,但定期失敗,生成所需的輸出,然後再次運行它工作正常。SQLServer與PowerShell的連接問題設置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() 

雖然搜索和閱讀我發現它與連接超時有關。我試圖SQL連接超時默認情況下,從30設置爲0,但在運行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()