【发布时间】:2020-01-24 03:42:16
【问题描述】:
我有这段代码可以从$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
【问题讨论】:
-
@Olaf 是的,但是,那是专门关于如何映射的。现在我解决了这个问题,所以我的新问题是覆盖,这就是为什么我打开一个新线程,就像我过去被建议为任何新主题做的那样
-
先删除表外数据
-
@Nick.McDermaid 该死,我希望批量复制的覆盖方法或属性
-
我刚刚检查了bulkcopy的定义,似乎没有。请注意,如果源表和目标表位于同一台服务器上,则运行单个查询会比将数据移出和移入数据库更有效。
标签: sql-server powershell