02. december 2004 - 11:49
Der er
2 kommentarer
Fejl ved delete af række i MSSQL 7 SP4
Hej.
Jeg har et problem ved sletning af en række i en tabel.
Jeg har et job der gennemløber en tabel ud fra nogle givne kriterier, og sletter udvalgte rækker i tabellen, ud fra nøgle værdier.
Det går godt "i starten" men pludselig standser opdateringen/sletningen. Jeg har sat profileren på og observeret at der hvor det går galt, bliver der opbygget et SQL statement med prepare SQL, lavet en "Execution plan", men der bliver aldrig startet en Exec prepared SQL, og heller aldrig commit'et. Istedet bliver der startet med at opbygge en ny "prepare SQL", og så er systemet "stallet".
Tidligere deletes af tilsvarende records, bliver korrekt opbygget med prepare SQL, Execution plan, Exec prepared SQL slutteligt Commit.
Er der nogen der har en ide til hvad der kan være galt. Jeg afvikler på W2K maskine med MSSQL 7 SP 4
/hrytter
02. december 2004 - 13:09
#2
Jeg prøver, mit problem er at vi bruger et værktøj der "ligger ovenpå" og genere SQL script'sene til. Her er hvad profileren skriver.
Denne virker :
declare @P1 int
set @P1=NULL
exec sp_prepare @P1 output, NULL, N'SELECT "X_RRNO","AFDNR","GRP","SASNR","LBNR","FALBNR","PER","SIDSTE","VPLVAR","HGR","GKODE","ABCD","LEVNR","OR156","LA156","KB156","SA156","ANTLAG","ANTORD","ANTKOB","ANTSAL","PTRFRM","PTRTBG","X_UPID","X_RRNO" AS RRNO FROM "VARSTR1" WHERE "AFDNR" = 1.0 AND "GRP" = ''245'' AND "SASNR" = ''05'' AND "LBNR" = ''006'' AND "FALBNR" = ''10'' ORDER BY "AFDNR","GRP","SASNR","LBNR","FALBNR","PER","X_RRNO"', 1
select @P1
go
declare @P1 int
set @P1=NULL
exec sp_prepare @P1 output, N'@P1 decimal(15,0)', N'DELETE FROM "VARSTR1" WHERE "X_RRNO" = @P1 AND "X_UPID" = +0000001', 1
select @P1
go
sp_execute 975
Denne virker ikke:
declare @P1 int
set @P1=NULL
exec sp_prepare @P1 output, NULL, N'SELECT "X_RRNO","AFDNR","GRP","SASNR","LBNR","FALBNR","PER","SIDSTE","VPLVAR","HGR","GKODE","ABCD","LEVNR","OR156","LA156","KB156","SA156","ANTLAG","ANTORD","ANTKOB","ANTSAL","PTRFRM","PTRTBG","X_UPID","X_RRNO" AS RRNO FROM "VARSTR1" WHERE "AFDNR" = 1.0 AND "GRP" = ''245'' AND "SASNR" = ''11'' AND "LBNR" = ''036'' AND "FALBNR" = ''10'' ORDER BY "AFDNR","GRP","SASNR","LBNR","FALBNR","PER","X_RRNO"', 1
select @P1
go
declare @P1 int
set @P1=NULL
exec sp_prepare @P1 output, N'@P1 decimal(15,0)', N'DELETE FROM "VARSTR1" WHERE "X_RRNO" = @P1 AND "X_UPID" = +0000002', 1
select @P1
go
Det kan selvfølgelig være at vores program der genere SQL, laver fejl, men jeg tror det ikke.