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