Server 2003上的PowerShell作业中的SQLConnection.open()失败

时间:2012-05-19 17:45:42

标签: powershell windows-server-2003 jobs sqlconnection

以下代码在W7,Serve2008上似乎对我有用,但当scriptblock作为作业运行时,在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的解决方案。

1 个答案:

答案 0 :(得分:0)

这可能是因为CredSPP和凭证授权。 Windows Server 2003只有CredSSP客户端组件,没有服务器组件。因此,除非Windows Server 2003框也是域控制器,否则凭证委派nevers在那里工作。