У меня есть база данных с возможностью использования. Я хочу обновить всех пользователей csv-файлом. Я импортировал свой файл csv во временную таблицу с SqlBulkCopy.Слияние таблиц с сервером sql 2008
Следующим шагом будет создание хранимой процедуры, которая обновляет таблицу моих пользователей, используя временную таблицу. До сих пор у меня есть это:
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)
;
Когда я пытаюсь выполнить это я получаю сообщение об ошибке:
Msg 102, Level 15, State 1, Procedure aml_UserImport2, Line 13 Incorrect syntax near 'MERGE'.
Что я делаю не так?
Я добавил semicolumn, но до сих пор не повезло :-(
UPDATE:.
Я сделал перепроверки и Altough Я использую MS SQL Management Server 2008 R2 кажется, что моя база данных имеет уровень совместимости SQL Server 2005 (90) это, вероятно, объясняет, почему это не работает ....
Спасибо всем
Гарет, нет гораздо больше, но я добавил весь код ... – Michiel
Я нахожусь в убытке на этом, поскольку процедура выполняется без ошибок на моей локальной машине (2008 и 2012), а также в [SQL Fiddle] (http: //sqlfiddle.com/#!3/ce030). – GarethD
Gareth благодарит вас за проверку кода. Я сделал перепроверку, и, хотя я использую MS SQL Server Management 2008 R2. Кажется, что моя база данных имеет уровень совместимости SQL Server 2005 (90). Вероятно, это объясняет, почему это не работает .... – Michiel