Announcement

Collapse
No announcement yet.

Ergebnis einer CLR-Tabellenwertfunktion in temporäre Tabelle mgl.?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ergebnis einer CLR-Tabellenwertfunktion in temporäre Tabelle mgl.?

    Hallo kann es sein dass man das Ergebnis von CLR Tabellenwertfunktionen nicht in eine temporäre Tabelle bringen kann?

    Dass es Probleme gibt innerhalb der CLR-Tabellenwertfunktion mit temporären Tabellen weiss ich, das ist auch nicht mein Problem...

    Code:
    --geht
    SELECT * 
    FROM [dbo].[CLR_AFSAuftragPositionen] (@abfrageconnectionstring_connectionstring)
    
    
    --geht nicht
    SELECT * 
    INTO #gaga
    FROM [dbo].[CLR_AFSAuftragPositionen] (@abfrageconnectionstring_connectionstring)
    Kann mir das jemand erklären?

  • #2
    Dann machst du wo was falsch. Ich habe es mit einem einfachen Beispiel probiert, da geht das astrein.

    bye,
    Helmut

    Comment


    • #3
      hallo,
      hast du es auch mit einer CLR-Tabellenwetfunktion probiert? Also mit .Net Code der die Daten irgendwie ermittelt? Mit normalen Tabellenwertfunktionen ist es ja keine Kunst....

      Ich mache in der CLR-Tabellenwertfunktion einen Zugriff auf eine andere Datenbank.

      Feuer ich das Statement in einem Fenster ab, bringt das funktionierende Zeilen und
      Code:
      SELECT * FROM #gaga
      nichts

      Fehlermeldung erhalte ich keine.

      Comment


      • #4
        Wieso sollte .Net einen Einfluss auf ein TSQL-Statement des SQL-Servers haben? Wenn das Statement im Query-Fenster des ManagementStudios funktioniert, dann kann man es es unter Garantie auch mit .Net zum Laufen bringen. Allerdings gibt es da mehr als nur das Statement. So müsste zB. das Transaktion-Handlig gleich sein und der User dieselben Berechtigungen (bei dir zB für den zweiten Server) haben, sonst kann das natürlich schiefgehen. Aber nachdem du dazu keine Angaben gemacht hast, müsste ich meine Glaskugel auspacken und dazu ist es jetzt schon zu spät

        bye,
        Helmut

        Comment


        • #5
          hallo,

          a) die Tabellenwertfunktion welche .Net CLR nutzt funktioniert alleine ausgeführt im Management Studio. D.h. mit Zugriff auf externe Datenbank alles wunderbar.

          b) Möchte ich das Ergebnis der Tabellenwertfunktion (im Management Studio Queryfenster ausgeführt, nicht in .Net) in einer Temporären Tabelle für spätere Verarbeitung in der gleichen Prozedur (oder auch Queryfenster) zwischenspeichern, so hat die temporäre Tabelle nie einen Inhalt. (wenn ich left joine mit anderen Tabelle dann immer auf der Seite der Tabellenwertfunktion NULL-Werte)

          Ich gehe/ging davon aus dass eine Tabellenwertfunktion basierend auf CLR das Ergebnis dem ausführenden Server zur Verfügung stellt, so als wäre es eine MSSQL-Tabellenwertfunktion. Hinsichtlich temporären Tabellen scheint etwas anders zu sein (wobei mir klar ist dass eine temporäre Tabelle in .Net CLR erzeugt und normalem SQL weiter genutzt nicht möglich ist - das verwende ich so auch nicht)


          Konnte nun die temporäre Tabelle umgehen

          SELECT * FROM
          (
          SELECT *
          FROM [dbo].[CLR_AFSAuftragPositionen] (@abfrageconnectionstring_connectionstring) as a LEFT JOIN
          andereTabelle as b ON a.positionID = b.positionID
          )
          WHERE ....

          Comment

          Working...
          X