Sql批量复制不在Powershell中工作

时间:2016-04-15 00:08:46

标签: sql-server powershell sqldatareader sqlbulkcopy

我正在尝试在SQL中执行SQL批量复制操作,它的行为非常不一致..

以下是我正在使用的代码:

function Copy 
{
    $con = New-Object System.Data.SqlClient.SqlConnection

    $con.ConnectionString = "Server = $($ServerInstance); Database =  ($DatabaseName); Trusted_Connection=True;"

    $con.open()
    $insertData = New-Object System.Data.SqlClient.SqlBulkCopy($con)
    $insertData.DestinationTableName = $destinationTableName

    for($i=0;$i -lt $reader.FieldCount;$i++)
    {
        $insertData.ColumnMappings.Add($reader.GetName($i), $reader.GetName($i))
    }
    try{
        write-host "Writing data to Server"
        write-host "$($reader.GetType())" 
        write-host "$($reader.HasRows)"
        write-host "$($reader.FieldCount)"  
    $insertData.WriteToServer($reader)
    Write-host "Data written"
    }
    catch [Exception]
    {
        write-host $_.Exception.ToString()
        write-host $_.Exception.Data
    }
    $insertData.Close()
    $con.Close()
}

输出在控制台上显示为:

Writing data to Server
System.Data.SqlClient.SqlDataReader
True
5
Data written

现在我的读者有行,也有计数。我已经验证列映射完全相同。

这有点有趣,因为这是在我的一个Devbox上工作但现在不能用于剩下的,我丢失了工作盒。

我已经克隆了相同的源代码。

这也没有任何例外。现在我知道SqlBulkCopy作为一个事务工作,如果有任何问题它会全部回滚,但是try catch不应该抛出错误吗?

非常感谢任何帮助。

0 个答案:

没有答案