Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

[MSSQL+ADO] Wozu sp_prepare/sp_Unprepare

  Alt 5. Jul 2007, 10:46
Datenbank: MS SQL-Server • Version: 2000 • Zugriff über: ADO
Hiho!

Beim Analysieren einer DB-Verbindung frage ich mich, wieso ADO jedes Skript erstmal mit 'sp_prepare' vorbereitet, dann mit 'sp_unprepare' weitermacht, um dann das Skript selbst auszuführen.
Das Lustige (na ja) ist, das ADO das auch dann macht, wenn ich im TADODataset die Eigenschaft 'Prepared' auf 'FALSE' setze. Nach allgemeinem Verständnis der englischen Sprache, der OH und nach Rückfrage mit meinem Großhirn, wo ab und an mein 'gesunder Menschenverstand' einen Zwischenstopp einlegt, sollte 'Prepared := False' doch eigentlich ADO davon abhalten, etwas derartiges zu machen, oder?
Auch ein Setzen von 'Use Procedure for Prepare=0' im Connectionstring der TADOConnection wird ignoriert.

So sieht das Skript aus, das ADO generiert:
SQL-Code:
declare @P1 int
exec sp_prepare @P1 output, NULL, N'select * from OrderView'
select @P1
go
exec sp_unprepare 3
go
select * from OrderView
go
Ist das nicht ein wenig krank?

Meine Fragen hierzu:

1. Was soll das?
2. Ist es sp_prepare/sp_unprepare wenigstens garantiert immer schneller?
3. If Answer(2)=NO Then 'Wie kann man das abstellen'

Zu 3: Eigentlich reicht es mir, wenn ADO einfach nur mein Skript/Befehl durchreicht, OHNE ihn mit 'sp_prepare' anzufassen.


NACHTRAG: Es passiert natürlich nur beim allerersten Mal, also wenn das Dataset zum 1.Mal geöffnet wird...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat