Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Triggers en SQL Server 2012

Estas en el tema de Triggers en SQL Server 2012 en el foro de SQL Server en Foros del Web. Estimados amigos. Quería haceros una consulta porque no estoy puesto en SQL Server 2012 y me ha tocado lidiar con un proyecto que hace uso ...
  #1 (permalink)  
Antiguo 02/02/2016, 10:23
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 3 meses
Puntos: 0
Triggers en SQL Server 2012

Estimados amigos. Quería haceros una consulta porque no estoy puesto en SQL Server 2012 y me ha tocado lidiar con un proyecto que hace uso de esta base de datos.

El caso es que tengo una aplicación heredad de la versión 2008, que he estado buscando pero ya nadie ofrece en los planes de hosting. He instalado la versión 2012 pero tengo problemas con los triggers que sin funciionan bien en la 2008.

Por ejemplo, este trigger:

Código SQL:
Ver original
  1. USE [BBDD]
  2. GO
  3.  
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9. ALTER TRIGGER [Seguimientos].[trLlamadas]
  10.                ON  [Seguimientos].[Llamadas]
  11.                AFTER INSERT,UPDATE,DELETE
  12.             AS
  13.             BEGIN
  14.                 BEGIN TRANSACTION
  15.                
  16.                 SET NOCOUNT ON;
  17.  
  18.                 BEGIN TRY
  19.  
  20.                 SELECT * INTO #INSERTEDTABLA FROM INSERTED
  21.                 SELECT * INTO #DELETEDTABLA FROM DELETED
  22.  
  23.                                 IdNombreTabla -> NombreTabla (ELIMINADO EL Id)
  24.                
  25.                 DECLARE @nombreTabla VARCHAR(100)
  26.                 SET @nombreTabla =  (SELECT  dbo.ObtenerNombreTablaAuditar ('tempdb.dbo.#INSERTEDTABLA'))
  27.  
  28.  
  29.                 DECLARE @Columns_Update varbinary(MAX)
  30.                 SELECT @Columns_Update = COLUMNS_UPDATED()
  31.  
  32.                 EXECUTE dbo.spAuditar @nombreTabla, @Columns_Update
  33.  
  34.             END TRY
  35.             BEGIN CATCH
  36.                
  37.                 DECLARE @CadenaCatch VARCHAR(MAX)
  38.                 SET @CadenaCatch = 'TRIGGER trLlamadas: ' + (SELECT ERROR_MESSAGE())
  39.                 RAISERROR (@CadenaCatch,16,10)
  40.  
  41.                 ROLLBACK TRANSACTION
  42.                
  43.             END CATCH
  44.                 IF (@@TRANCOUNT > 0)  COMMIT TRANSACTION   
  45.                
  46.             END
[/CODE]

Me funciona perfectamente en 2008 pero no en 2012. ¿Alguien sabe si hay alguna diferencia, algo que pueda "reprogramar" para que funcione?

Muchísimas gracias a todos.

Última edición por gnzsoloyo; 03/02/2016 a las 10:38
  #2 (permalink)  
Antiguo 02/02/2016, 10:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Triggers en SQL Server 2012

y cual es el error en 2012???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 02/02/2016, 18:33
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: Triggers en SQL Server 2012

Código:
TRIGGER trLlamadas: PROCEDURE [spAuditar] : Se especificaron varias columnas de identidad para la tabla '#TABLAINSERTEDXML'. Sólo se permite una por tabla.
Sé que el error es bastante autoexplicativo, pero en 2008 funciona bien y en 2012 no. ¿Qué es #TABLAINSERTEDXML?

Por si puede ayudar, cada vez que abro para el SP, me dice que "Los finales de línea no son coherentes. ¿Desea editarlo?".

Perdonad mi ignorancia, estoy bastante pez en SQL Server...
  #4 (permalink)  
Antiguo 03/02/2016, 09:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Triggers en SQL Server 2012

Vienes a preguntar que es "#TABLAINSERTEDXML"? eso deberias de saberlo tu porque es una tabla temporal que se crean en tu trigger, ahora el error es que tienes un campo identity en una tabla y quieres insertar esos valores en una segunda, ya revisaste el codigo de los procedures que manda llamar tu trigger? si los revisas quizas ahi encuentres que es #TABLAINSERTEDXML ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: 2012, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:38.