|
| "set identity insert on" virker ikke Fra : Jimmy |
Dato : 12-01-04 11:31 |
|
Hey
Har i et stykke tid kørt med en SQL, hvor jeg starter med "SET
IDENTITY_INSERT kal_gentagelse ON", kører min SQL, og slutter med "SET
IDENTITY_INSERT kal_gentagelse OFF".
Grunden til dette er at jeg har et felt ved navn id som jeg har sat til en
identity i Microsoft SQL Server. Feltet er ligeledes primær nøgle i
tabellen.
Dette virker af en eller anden grund ikke mere. Fejlen jeg får er "Cannot
insert explicit value for identity column in table 'kal_gentagelse' when
IDENTITY_INSERT is set to OFF". Det lyder bare mærkeligt i mine ører når
sekvensen er som følger:
"SET IDENTITY_INSERT kal_gentagelse ON"
"Insert into..."
"SET IDENTITY_INSERT kal_gentagelse OFF"
Nogen der har nogen ideer til hvad der er galt, for jeg er helt på bar bund
her???
--
Jimmy
| |
Jens Gyldenkærne Cla~ (12-01-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 12-01-04 14:30 |
|
Jimmy skrev:
> Dette virker af en eller anden grund ikke mere. Fejlen jeg får
> er "Cannot insert explicit value for identity column in table
> 'kal_gentagelse' when IDENTITY_INSERT is set to OFF".
Er det hele fejlmeddelelsen?
> "SET IDENTITY_INSERT kal_gentagelse ON"
> "Insert into..."
> "SET IDENTITY_INSERT kal_gentagelse OFF"
Hvor kører du dine sql-kommandoer fra?
Hvordan ser resten af din insert-kommando ud?
> Nogen der har nogen ideer til hvad der er galt, for jeg er
> helt på bar bund her???
Et skud - du har ikke defineret hvilke kolonner dine værdier skal
indsættes i (det skal gøres ved identity-insert uanset om man giver
værdier til samtlige kolonner).
--
Jens Gyldenkærne Clausen
Do you solemnly swear to tell the error message, the whole error
message, nothing but the error message so help you God?
| |
Jimmy (12-01-2004)
| Kommentar Fra : Jimmy |
Dato : 12-01-04 19:11 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns946E93950A729jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Jimmy skrev:
>
> > Dette virker af en eller anden grund ikke mere. Fejlen jeg får
> > er "Cannot insert explicit value for identity column in table
> > 'kal_gentagelse' when IDENTITY_INSERT is set to OFF".
>
> Er det hele fejlmeddelelsen?
Nej der er lige lidt mere:
Microsoft OLE DB Provider for SQL Server fejl '80040e14'
Cannot insert explicit value for identity column in table 'kal_gentagelse'
when IDENTITY_INSERT is set to OFF.
c:\sti\filnavn, line 3094
>
>
> > "SET IDENTITY_INSERT kal_gentagelse ON"
> > "Insert into..."
> > "SET IDENTITY_INSERT kal_gentagelse OFF"
>
> Hvor kører du dine sql-kommandoer fra?
Jeg kører dem i ASP. Webserveren er en maskine for sig og SQL serveren kører
på en anden maskine.
> Hvordan ser resten af din insert-kommando ud?
"Insert into kal_gentagelse (id, felt1, felt2, felt3, felt4, felt5, felt6,
felt7, felt8, felt9, felt10, felt11) values (" & var_id & ",
Convert(datetime, ' " & var1 & " ', 105), Convert(datetime, ' " & var2 & "
', 105), " & var3 & ", '" & var4 & "', " & var5 & ", " & var6 & ", " & var7
& ", " & var8 & ", " & var9 & ", " & var10 & ", " & var11 & ")"
> > Nogen der har nogen ideer til hvad der er galt, for jeg er
> > helt på bar bund her???
>
> Et skud - du har ikke defineret hvilke kolonner dine værdier skal
> indsættes i (det skal gøres ved identity-insert uanset om man giver
> værdier til samtlige kolonner).
Ok, det vidste jeg ikke. Men jeg tror ikke at det er det der er problemet.
Hvad kan det ellers være?
Indtil videre tak for hjælpen :)
Jimmy
| |
Jens Gyldenkærne Cla~ (12-01-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 12-01-04 23:51 |
|
Jimmy skrev:
> Microsoft OLE DB Provider for SQL Server fejl '80040e14'
> Cannot insert explicit value for identity column in table
> 'kal_gentagelse' when IDENTITY_INSERT is set to OFF.
O.k. - mit umiddelbare skud var ikke relevant.
>> > "SET IDENTITY_INSERT kal_gentagelse ON"
>> > "Insert into..."
>> > "SET IDENTITY_INSERT kal_gentagelse OFF"
> Jeg kører dem i ASP.
Har du prøvet at samle linjerne i en SP? Hvordan sender du
linjerne pt - i samme kommando eller i flere?
--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information
| |
Jimmy (13-01-2004)
| Kommentar Fra : Jimmy |
Dato : 13-01-04 08:55 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns946EF2A12F908jcdmfdk@gyrosmod.cybercity.dk...
> Jimmy skrev:
>
> >> > "SET IDENTITY_INSERT kal_gentagelse ON"
> >> > "Insert into..."
> >> > "SET IDENTITY_INSERT kal_gentagelse OFF"
>
> > Jeg kører dem i ASP.
>
> Har du prøvet at samle linjerne i en SP? Hvordan sender du
Jeg har ikke prøvet at samle dem i en SP, det prøver jeg lige.
> linjerne pt - i samme kommando eller i flere?
Jeg sender dem i flere
linkDB.Execute("SET IDENTITY_INSERT kal_gentagelse ON")
linkDB.Execute("insert into...")
linkDB.Execute("SET IDENTITY_INSERT kal_gentagelse ON")
Jimmy
| |
Jens Gyldenkærne Cla~ (13-01-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 13-01-04 09:23 |
|
Jimmy skrev:
> Jeg sender dem i flere
Det er måske problemet - hvis de kører i hver deres batch
"overlever" identity-indstillingen måske ikke.
Prøv evt. at samle dem til ét kald.
--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information
| |
Jimmy (13-01-2004)
| Kommentar Fra : Jimmy |
Dato : 13-01-04 10:15 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns946F5F7DFB9F4jcdmfdk@gyrosmod.cybercity.dk...
> Jimmy skrev:
>
> > Jeg sender dem i flere
>
> Det er måske problemet - hvis de kører i hver deres batch
> "overlever" identity-indstillingen måske ikke.
>
> Prøv evt. at samle dem til ét kald.
Jeg har nu lavet en stored procedure
CREATE PROCEDURE [DBO].[sp_navn]
@var_id int,
@var1 nvarchar(10),
@var2 nvarchar(10),
@var3 int,
@var4 nvarchar(10),
@var5 bit,
@var6 bit,
@var7 bit,
@var8 bit,
@var9 bit,
@var10 bit,
@var11 bit
AS
SET IDENTITY_INSERT kal_gentagelse ON
Insert into kal_gentagelse (id, felt1, felt2, felt3, felt4, felt5, felt6,
felt7, felt8, felt9, felt10, felt11) values (@var_id, convert(datetime,
@var1, 105), convert(datetime, @var2, 105), @var3, @var4, @var5, @var6,
@var7, @var8, @var9, @var10, @var11)
SET IDENTITY_INSERT kal_gentagelse OFF
GO
Det lader til at identity indstillingen rent faktisk ikke overlever, men jeg
tør næsten sværge på at det har virket før. Din forklaring giver dog god
mening, og eftersom det virker nu, må det jo have været det der var
problemet.
Jeg takker endnu engang for din hjælp (Der ryger lige en "cyber-bajer" din
vej, skål) ;)
Jimmy
| |
Peter Lykkegaard (13-01-2004)
| Kommentar Fra : Peter Lykkegaard |
Dato : 13-01-04 13:45 |
|
"Jimmy" wrote in a message
> Det lader til at identity indstillingen rent faktisk ikke overlever,
Det er korrekt
> men jeg tør næsten sværge på at det har virket før.
Evt fordi du har fået startet en implicit transaction?
> Din forklaring giver dog god mening, og eftersom det
> virker nu, må det jo have været det der var problemet.
Det er "by design"
>
> Jeg takker endnu engang for din hjælp (Der ryger lige en "cyber-bajer" din
> vej, skål) ;)
>
Damn
Har du overvejet at åbne et udskænkningssted i cyberspace, man bliver jo
helt tørstig
- Peter
| |
|
|