我有一个带有用户表的数据库。我想用 csv 文件更新所有用户。我使用 SqlBulkCopy 将我的 csv 文件导入到一个临时表中。
我的下一步将是创建一个使用临时表更新我的用户表的存储过程。到目前为止,我有这个:
USE [Userdata]
GO
/****** Object: StoredProcedure [dbo].[aml_UserImport] Script Date: 03/06/2013 14:11:44 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
-- =============================================
-- Author: michiel reyers
-- Create date: 07-01-2013
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[aml_UserImport2]
AS
SET NOCOUNT ON;
MERGE users
USING temp_users ON temp_users.ID = users.ID
WHEN MATCHED
THEN UPDATE SET users.typeId = temp_users.typeId,
users.Name = temp_users.Name,
users.active = 1
WHEN NOT MATCHED BY SOURCE
THEN UPDATE SET users.active = 0
WHEN NOT MATCHED BY TARGET
THEN Insert (ID,typeID,Name,active)
VALUES (temp_users.ID,temp_users.typeId,temp_users.Name,1)
;
当我尝试执行此操作时,出现错误:
消息 102,级别 15,状态 1,过程 aml_UserImport2,第 13 行“合并”附近的语法不正确。
我究竟做错了什么?
我添加了半列,但仍然没有运气:-(
更新:
我进行了重新检查,尽管我使用的是 MS SQL Server Management 2008 R2。看来我的数据库具有 SQL Server 2005 (90) 的兼容性级别。这可能解释了为什么这不起作用....
感谢大家!