Re: SqlDataAdapter1.SelectCommand.CommandType= CommandType.StoredProcedure

From: Elmar Boye (ElmarB_at_gmx.net)
Date: 02/12/05

  • Next message: Peter Fleischer: "Re: SqlDataAdapter1.SelectCommand.CommandType= CommandType.StoredProcedure"
    Date: Sat, 12 Feb 2005 21:39:55 +0100
    
    

    Hallo Klaus,

    Klaus Eckert <a@eckert-k.de> schrieb ...

    zunächst gilt für die SqlDataAdapter.XXXCommand Eigenschaften,
    dass dahinter immer ein SqlCommand steckt. Und alles folgende
    gilt für ein SqlCommand äquivalent.

    > bei der Einstellung SQLDataAdapter.CommandType.StoredProcedure
    > kann man beim EXEC PROC keine Parameter beifügen.

    das EXEC ist überflüssig und schädlich...

    > Statt dessen muss CommandType.Text eingestellt werden.

    ... wenn Du nur den qualifizierten Prozedurnamen (Besitzer.ProzedurName)
    im CommandText abstellst, so wäre das der richtige Weg,
    mit und ohne Parameter.

    > Meine Frage:
    > Hat CommandType.StoredProcedure Vorteile gegenüber CommandType.Text,

    CommandType.StoredProcedure wird intern als RPC Command abgesetzt,
    da das TDS Protokoll das intern unterscheiden kann. Näheres zu
    SQL RPC siehe SQL Server Dokumentation, u. a. beschrieben in
    "Architektur remote gespeicherter Prozeduren", wobei die
    Remote-Ausführungsmöglichkeiten zunächst keine Rolle spielen.

    > und wenn ja welche,

    Was allerdings in Bezug auf Durchsatz/Leistung für die Anwendung
    selten einen grossen Unterschied macht.

    > oder ist es vernünftig, generell CommandType.Text
    > einzustellen, auch wenn keine Parameter beigefügt werden?

    Nein - siehe oben.
    Bei CommandType.Text wird in den Fällen, wo keine Parameter vorkommen
    (Parameters.Count == 0), der SQL Befehl direkt übergeben.

    Sobald Parameter vorkommen, wird die interne Prozedur sp_executesql
    für die Ausführung und Parameterübergabe verwendet - bezüglich der
    Vorteile siehe die SQL Server Online-Dokumentation zu sp_executesql.
    Und prinzipiell ist es auch möglich Dein EXEC PROC damit zu verpacken
    - mit ein bissel Nachdenken kommst Du bestimmt selbst darauf,
    was aber ausser Umständen keinen Nutzen gibt.

    Wichtiger ist bei sp_executesql ist, dass die Anweisungen intern wie
    ein eigener Batch behandelt werden. Und so u. a. Variablen und lokale
    temporäre Tabellen, die in dem Batch erstellt werden, unmittelbar
    nach der Ausführung ungültig werden.
    Was in dem einen oder anderen Falle unerwünscht sein kann, dann
    (und am besten nur dann) muss man die Parameter direkt im CommandText
    expandieren.

    Gruss
    Elmar


  • Next message: Peter Fleischer: "Re: SqlDataAdapter1.SelectCommand.CommandType= CommandType.StoredProcedure"

    Relevant Pages

    • Re: SqlDataAdapter1.SelectCommand.CommandType= CommandType.StoredProcedure
      ... >> kann man beim EXEC PROC keine Parameter beifügen. ... > da das TDS Protokoll das intern unterscheiden kann. ... > nach der Ausführung ungültig werden. ...
      (microsoft.public.de.german.entwickler.dotnet.datenbank)
    • Re: Full text catalog just not populating
      ... exec sp_defaultdb N'NT Authority\System', N'master' ... means either the network guys in my company who don't know SQL but are admins ... > needs this login to log into SQL Server and you can either add back this ... >> fetching U ...
      (microsoft.public.sqlserver.fulltext)
    • Re: Indexing delay for one row.
      ... script and WAITFOR and varying the delay from 1 to 18 seconds. ... could you confirm your exact version of SQL Server that you are seeing ... It is possible that a change was made to the pooling frequence under SP3 to ... exec sp_fulltext_table 'FTSTable','create','FTSCatalog','FTSTable_IDX' ...
      (microsoft.public.sqlserver.fulltext)
    • Re: storing and searching office docs in SQL
      ... You CAN both store and search the contents of the MS Word ... files stored in an SQL Table's FT-enable IMAGE column, ... FTS CONTAINS or FREETEXT to search the contents of that MS word document: ... exec sp_fulltext_database 'enable' -- only do this once! ...
      (microsoft.public.sqlserver.programming)
    • pls help for the script!
      ... my script do not run with the parameter " ... exec sp_executesql @sql ... --Dummy-Tabelle Spaltenname erstellen ...
      (microsoft.public.de.vb.datenbank)