Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Incorrect syntax to '@errornumber' after upgrading to 20
Message
General information
Forum:
Microsoft SQL Server
Category:
Other
Environment versions
SQL Server:
SQL Server 2008
Application:
Desktop
Miscellaneous
Thread ID:
01577723
Message ID:
01577741
Views:
36
>>>>>>Hi there,
>>>>>>
>>>>>>We are in the process of upgrading our databases from Sql Server 2005 to Sql Server 2012. All ports have been successful except one database that I designed 9 years ago.
>>>>>>
>>>>>>Every table has a primary index and most have foreign keys. Trying to update any record in any table with at least a foreign key generates an error "Syntaxe incorrecte vers '@error_number' " that translates into something like "'ncorrect syntax to '@errornumber' "
>>>>>>
>>>>>>There are no special user rights involved.
>>>>>>
>>>>>>The port has been done (1) with detach / attach and (2) from a backup and I observe the same behavior, which is somewhat reassunring :)
>>>>>>
>>>>>>The database is not set as readonly.
>>>>>>
>>>>>>I have compared the SQL 2005 and 2008 db instances and see no difference.
>>>>>>
>>>>>>So what?
>>>>>>
>>>>>>José
>>>>>
>>>>>Start SQL Profiler and see what is executed.
>>>>Thanks Borislav,
>>>>
>>>>I show you the result in the attached picture (I am using Toad for SWL Server 6.0).
>>>>
>>>>Also I have to rephrase my last sentence: >I have compared the SQL 2005 and 2012 db instances and see no difference.
>>>
>>>This is Execution plans, you need to run SQL Profiler (SSMS menu Tools->SQL Server Profiler)
>>
>>Hmm, sorry for using the wrong tool. The profiler has only two lines regarding this operation. Perhaps will you see something special.
>>
>>José
>
>That is what you need.
>Just copy and paste these line in New Query editor of SSMS and run it.
>Then you will see where the error occurs.

Ok, I hadn't notices the improvements in SSMS.

Running my very short code there raised an error that is easy to locate:
Msg 102, Niveau 15, État 1, Procédure T_U_Catalogue, Ligne 60
Syntaxe incorrecte vers '@error_number'.

So the trigger is the cause. Here is the code (generated by xCase):
USE [Softex];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
/*  Update Trigger '[dbo].[T_U_Catalogue]' for Table '[dbo].[Catalogue]'  */

CREATE TRIGGER [dbo].[T_U_Catalogue] ON [dbo].[Catalogue] FOR UPDATE AS

BEGIN
    DECLARE
           @row_count       INT,
           @null_row_count  INT,
           @error_number    INT,
           @error_message   VARCHAR(255)

    SELECT @row_count = @@rowcount
    IF @row_count = 0
       RETURN

/*  When updating a row in child '[dbo].[Catalogue]' ,the Foreign Key must be Null or exist in Parent '[dbo].[cLookup]'  */

IF UPDATE([FK_iOldCodeId])
   BEGIN
        SELECT @null_row_count =
              (
               SELECT COUNT(*)
               FROM   inserted
               WHERE  [FK_iOldCodeId] is null
              )
        IF @null_row_count != @row_count
           IF (
               SELECT COUNT(*)
               FROM   [dbo].[cLookup] p, inserted i
               WHERE  p.[iID] = i.[FK_iOldCodeId]
              )
              != @row_count - @null_row_count
              BEGIN
                   SELECT @error_number=30002,
                          @error_message='Cannot update child in "[dbo].[Catalogue]".'
                   GOTO error
              END
   END

/*  The Primary Key of '[dbo].[Catalogue]' cannot be modified if children exist in '[dbo].[Presentation]'  */

IF UPDATE([iID])
BEGIN
     IF EXISTS (
                SELECT 1
                FROM   [dbo].[Presentation] c, inserted i, deleted d
                WHERE  c.[FK_iCatalogueId] = d.[iID]
                AND   (i.[iID] != d.[iID])
               )
        BEGIN
             SELECT @error_number=30004,
                    @error_message='Children exist in "[dbo].[Presentation]". Cannot modify Primary Key in "[dbo].[Catalogue]".'
             GOTO error
        END
END
RETURN

/*  Error Handling  */
error:
      RAISERROR @error_number @error_message
      ROLLBACK TRANSACTION
END

GO
We are approaching.

José
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform