Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2005,批量更新或插入_Sql_Sql Server 2005 - Fatal编程技术网

SQL Server 2005,批量更新或插入

SQL Server 2005,批量更新或插入,sql,sql-server-2005,Sql,Sql Server 2005,我正在寻找一种解决方案,以便在SQLServer2005中执行类似重复密钥更新的插入操作。此操作可能会插入或更新大量条目。SQL Server 2008有一个简洁的操作合并,这将非常完美,问题是我们一直使用SQL Server 2005。 我已经研究过标准解决方案,但它们都不好,因为它们假设只更新/插入了一个条目。 有人知道在旧版本的SQL Server中复制合并行为的方法吗?包含使用UPDATE语句的OUTPUT子句的建议。要从该博客条目(未经测试)中解释该示例,请执行以下操作: 我必须开始更

我正在寻找一种解决方案,以便在SQLServer2005中执行类似重复密钥更新的插入操作。此操作可能会插入或更新大量条目。SQL Server 2008有一个简洁的操作合并,这将非常完美,问题是我们一直使用SQL Server 2005。
我已经研究过标准解决方案,但它们都不好,因为它们假设只更新/插入了一个条目。
有人知道在旧版本的SQL Server中复制合并行为的方法吗?

包含使用
UPDATE
语句的
OUTPUT
子句的建议。要从该博客条目(未经测试)中解释该示例,请执行以下操作:


我必须开始更多地使用OUTPUT子句!关于性能的一个注意事项,如果向表变量添加主键,它将显著加快执行速度。对我来说,它将100k行的插入/更新的执行时间从4分钟减少到了~6秒<代码>声明@updated_id表(id int主键集群)
DECLARE @updated_ids table(id int)

UPDATE table
   SET ...
OUTPUT inserted.id INTO @updated_ids
  FROM table INNER JOIN data-to-insert ON table.id = data-to-insert.id 

INSERT INTO table
SELECT ...
  FROM data-to-insert
 WHERE id NOT IN (SELECT id FROM @updated_ids)