我有这段代码,可以从$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

最佳答案

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

关于sql-server - 用BulkCopy覆盖SQL Server表数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54471629/

10-11 05:35