我正在使用PowerShell连接到SQLServer数据库。我的脚本运行SQL代码工作正常,但定期无法生成所需的输出,然后再次运行它工作正常。
$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连接超时从默认值设置为0 30,但是在运行scirpt时,我收到以下错误:
$sqlConn.ConnectionTimeout = 0 is read-only property.
知道我在这里做错了什么吗?
谢谢。
就个人而言,我设置了命令超时,而不是连接...
$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()
解决此问题
的最简单方法是将;Connection Timeout=60
添加到连接字符串中。
$sqlConn = New-Object System.Data.SqlClient.SqlConnection('Connection Timeout=60')
$sqlConn.ConnectionTimeout
60
你可能不希望它设置为 0,如果你需要一个高得离谱的值,请使用 300 或其他东西。