用BulkCopy覆盖SQL Server表数据

时间:2019-02-01 01:21:38

标签: sql-server powershell

我有这段代码可以从$dmvResult(数据表)批量复制到SQL Server表中。

$dmvResult = DMV_Query 'SELECT [SESSION_ID], [SESSION_SPID]
                        FROM $SYSTEM.DISCOVER_SESSIONS';
$ConnectionString ='Data Source={0}; Database={1}; Trusted_Connection=True;' -f $Server,$DB

$bulkCopy = new-object Data.SqlClient.SqlBulkCopy($ConnectionString)
$bulkCopy.DestinationTableName=$TableSomething

foreach ($column in $dmvResult.Columns) { 
     $bulkCopy.ColumnMappings.Add($column.ColumnName, $column.ColumnName) > $null 
}

$bulkCopy.WriteToServer($dmvResult)

它可以完美工作,但是它会附加数据,因此会创建越来越多的行。可以在每次运行脚本时以某种方式覆盖SQL Server表中的数据吗?我不想保留现有数据,而是每次脚本运行时都覆盖

本质上,我想做这样的事情:

$bulkCopy.WriteToServer($dmvResult) | overwrite

1 个答案:

答案 0 :(得分:-1)

我有同样的问题。我看到的唯一解决方法是创建一个临时表并为此创建一个bulkCopy。然后使用存储过程将登台表和您要覆盖的表合并。