我有这段代码可以从$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
答案 0 :(得分:-1)
我有同样的问题。我看到的唯一解决方法是创建一个临时表并为此创建一个bulkCopy
。然后使用存储过程将登台表和您要覆盖的表合并。