Keine Wirkung bei "SET IDENTITY_INSERT ... ON"



  • Hallo zusammen,

    ich habe mir in c++ ein Tool geschrieben welches Sql-Statements ausführt.
    Wenn ich jetzt jedoch eine INSERT INTO in eine Tabelle mache die ein IDENTITY-Feld hat bekomm ich den Fehler:

    [Microsoft][ODBC SQL Server Driver][SQL Server]Ein expliziter Wert f³r die Ident
    itõtsspalte kann in der Synclog-Tabelle nicht eingef³gt werden, wenn IDENTITY_IN
    SERT auf OFF festgelegt ist., SQLSTATE=23000

    Nun habe ich das Statment SET IDENTITY_INSERT ... ON zuvor eingefügt und danach mein INSERT Statement abgesetz, jedoch blieb auch das ohne erfolg. Das SET IDENTITY_INSERT ... ON lieferte jedoch keinen Fehler.
    Warum funktioniert es dann trotzdem nicht?
    Habe ich andere Möglichkeiten das Identity-Feld zu setzen?

    Ich verwende eine MSDE Datenbank.
    Hier ein Auszug aus meinem Code

    if ( get_SQLHandle(&hstmt) ) 
        { 
           printf("Error getting SQLHandle \n");
    	   err_passiert=1;
           rw=1;
           break;
        }
    
        if (SQLPrepare (hstmt,(UCHAR *)sqlcmd,SQL_NTS) != SQL_SUCCESS)
        {  
    	  err_passiert=1;
              DBErr("SQLPrepare",hstmt);
              rw=1;
    		  break; 
        }
        if ((rw=SQLExecute (hstmt) ) != SQL_SUCCESS)
        {  
              err_passiert=1;
              DBErr("SQLExec",hstmt);  //hier wird der Fehler ausgegeben
              //rw=1; V2.02.0
    		  break;
        }
    


  • Ich schätze mal du darfst das Statement nicht direkt absetzen sondern musst IDENTITY_INSERT über SQLSetEnvAttr() irgendwie setzen.

    Naja seis drum, was benötigt wird: Das Statement das du absetzt.

    MfG SideWinder


Anmelden zum Antworten