Hallo
Ich habe eine Com-Dll erstellt mit nativen ADO Zugriff auf eine Sql 2000 Datenbank. Als Result lasse ich mir batch-optimistische Recordsets zurückliefern.
Die Ergebnismenge ist <B> immer </B> beim Client vorhanden, wenn Client und COM-DLL auf dem gleichen System ausgeführt werden. Wird die COM-DLL auf einem Win 2000 Server ausgeführt, erhalte ich <B> manchmal </B>, je nach Zugriffsmethode, die folgenden Meldungen.
<B> Zugriff verweigert </B> oder
<B> Das Rowset kann nicht geladen werden, da der Datenstrom ungültig ist </B>
Client Umgebung:
Win 200 Pro, Delphi C/S mit Delphi Patch und ADO-Express Patch, MDAC 2.61
Server Umgebung:
Win 2000 Server Patch 1, Sql 2000 Patch 1, MDAC 2.61
Der Client ruft das Objekt wie folgt auf:
var
Server : IMetaDaten_Srv;
aRS1 : ADODB_TLB._Recordset;
aRS2 : ADOInt._Recordset;
begin
FMTSServer := CoTest2_Srv.Create;
aRS2 := IUnknown( FMTSServer.GetData( ConnStr, SqlStr)) as ADOInt._Recordset;
ADODataSet1.Recordset := aRS2;
//oder
aRS1 := FMTSServer.GetData( ConnStr, SqlStr) as ADODB_TLB._Recordset;
ADODataSet1.Recordset := ADOInt._Recordset(aRS1);
end;
Kann mir jemand helfen ?
Danke
O.Wilms
Ich habe eine Com-Dll erstellt mit nativen ADO Zugriff auf eine Sql 2000 Datenbank. Als Result lasse ich mir batch-optimistische Recordsets zurückliefern.
Die Ergebnismenge ist <B> immer </B> beim Client vorhanden, wenn Client und COM-DLL auf dem gleichen System ausgeführt werden. Wird die COM-DLL auf einem Win 2000 Server ausgeführt, erhalte ich <B> manchmal </B>, je nach Zugriffsmethode, die folgenden Meldungen.
<B> Zugriff verweigert </B> oder
<B> Das Rowset kann nicht geladen werden, da der Datenstrom ungültig ist </B>
Client Umgebung:
Win 200 Pro, Delphi C/S mit Delphi Patch und ADO-Express Patch, MDAC 2.61
Server Umgebung:
Win 2000 Server Patch 1, Sql 2000 Patch 1, MDAC 2.61
Der Client ruft das Objekt wie folgt auf:
var
Server : IMetaDaten_Srv;
aRS1 : ADODB_TLB._Recordset;
aRS2 : ADOInt._Recordset;
begin
FMTSServer := CoTest2_Srv.Create;
aRS2 := IUnknown( FMTSServer.GetData( ConnStr, SqlStr)) as ADOInt._Recordset;
ADODataSet1.Recordset := aRS2;
//oder
aRS1 := FMTSServer.GetData( ConnStr, SqlStr) as ADODB_TLB._Recordset;
ADODataSet1.Recordset := ADOInt._Recordset(aRS1);
end;
Kann mir jemand helfen ?
Danke
O.Wilms
Comment