以下代码在 W7、Serve2008 上似乎对我有用,但当脚本块作为作业运行时,在 Server 2003 上失败。
$scriptblock = [scriptblock]::Create('
$DestinationConnectionString_sql = "Data Source=<myserver>;Initial Catalog=<mydatabase>;User Id=sa;Password=<sapassword>"
$destConnection = New-Object System.Data.SqlClient.SQLConnection($DestinationConnectionString_sql)
" Before Open Statement Connection State $($destConnection.State)"
$destConnection.open()
" After Open Statement Connection State $($destConnection.State)"
$destConnection.close()
')
"--- direct call work on Server 2003 ---"
& $scriptblock
"--- call in PowerShell Job faills on Server 2003 ---"
Get-Job | remove-job -force
$start = Get-date
$job1 = (Start-job $scriptblock).id
" started"
Wait-Job -id $job1 -timeout 30 | Out-Null
if ((Get-job -id $job1).state -eq 'Running')
{
Stop-job -id $job1
}
" Job State: $((Get-Job).state)"
Receive-job -id $job1
$state1 = (Get-job -id $job1).State
$dauer1 = ((get-date) - $start).Totalseconds
" Time spent in job: $dauer1"
我已经在我的工作域中使用一些机器测试了脚本。直接执行在任何机器上都没有问题。在 Windows Server 2003 sp 2 上作为作业执行失败。open() 的默认超时 15 秒都不起作用,也没有连接打开。
注意:我可以在这些服务器上的作业中成功运行 sqlcmd。
该问题出现在某些构建代理上,短时间内无法更换。
我需要一个适用于 Server 2003 sp 2 的解决方案。