fejl ved sletning af data i ms sql server via recordset
Hej AlleJeg har lidt problemer med en fejl, der opstår når jeg forsøger at slette nogle data i en ms sql server. Men fejlen opstår kun når jeg kører min applikation fra vores "live" webserver og sammen med "live" sql serveren. På mit test setup fungerer koden upåklageligt og jeg kan slette uden problemer. Jeg formoder derfor det ikke er min asp kode den er gal med, men opsætningen af "live" sql serveren.
Fejlen ser således ud:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server]Could not find server 'XXXXX' in sysservers. Execute sp_addlinkedserver to add the server to sysservers.
/admin/includes/asp/functions.asp, line 293
Det skal nævnes at 'XXXXX' naturligvis i den originale fejlbesked refererer til servernavnet for sql serveren.
Her er den funktion der får fejlen til at opstå:
function doPagesDelete(intParentId,intFirstRun)
dim sql, sql2, parentId, intCountDeletedPages, rs, strColumn
if intFirstRun = 1 then strColumn = "id" else strColumn = "parent_id"
sql = "select id from pages where " & strColumn & " = '" & intParentId & "'"
set rs = Server.CreateObject("ADODB.RecordSet")
rs.ActiveConnection = db
rs.Source = sql
rs.CursorType = 1
rs.LockType = 3
rs.Open
do while not rs.eof
intCountDeletedPages = doPagesDelete(rs("id"),0) + intCountDeletedPages
sql2 = "delete from products_pagebindings where page_id = '" & rs("id") & "'"
db.execute(sql2)
rs.delete
rs.update
rs.movenext
intCountDeletedPages = intCountDeletedPages + 1
loop
rs.Close
set rs = Nothing
doPagesDelete = intCountDeletedPages
end function
Det er en rekursiv funktion, der har til formål at slette den ønskede side fra databasen, men også alle sidens eventuelle undersider og undersider til disse osv osv.
Når der i fejlbeskeden refereres til linie 293 svarer det i ovenstående funktion til linie 15:
rs.delete
Fejlen opstår altså når jeg forsøger at slette en side i mit recordset via rs.delete - men fejlen opstår ikke når jeg kører scriptet op imod en anden sql server.
Det skal nævnes at hvis jeg forsøger at slette elementer i "live" databasen via ordinære sql sætninger der blot executes direkte mod et connection objekt, så kan jeg slette uden problemer. Det er altså i denne sammenhæng tilsyneladende fordi jeg bruger et recordset at fejlen opstår.
Kan nogen hjælpe mig videre til en løsning ?!?
