2009-04-10 13 views
5
  1. Ho un TSQL stored procedure tsql__sp__A che fa due cose:

(a) crea una tabella temporanea #temptable che dispone di dati selezionare da un complesso query SELECT.L'accesso a TSQL ha creato le tabelle #temp dalla stored procedure CLR. È possibile?

(b) Chiama una procedura memorizzata gestita CLR clr__sp__B per ogni riga che esegue il calcolo sui parametri di riga.

Domanda: E 'possibile accedere #temptable dalla procedura CLR clr__sp__B utilizzando lo stesso contesto di connessione? (No, non voglio spostare o creare un altro #tempTable all'interno della procedura gestita)

Grazie.

risposta

0

Possiamo definire due tipi di tabelle temporanee in SQL.

  • locale
  • globale

A proposito di tabelle temporanee locali:

quando la tabella è preceduta da single sign '#', essa è definita come tabella temporanea locale e la sua portata è limitato alla sessione in cui è stato creato.

E su tabelle temporanee globali:

A differenza di tabelle temporanee locali, tabelle temporanee globali sono visibili in tutta intera istanza.

Quindi potresti provare a utilizzare "##" per creare una tabella temporanea globale. (Se c'è una differenza tra "contesto di connessione" e "sessione")

+0

Grazie. Sì, ho tabelle temporanee globali (##) come ultima opzione, ma mi chiedevo se esiste un modo per passare il contesto corrente di sessione/connessione di TSQL al CLR del gestore? –

+0

Huh, bella domanda. Ma che cosa è l'inversione delle chiamate? Voglio dire che crei una stored procedure "wrapper" gestita, e quella procedura chiama tsql__sp__A e poi clr__sp__B. Oppure, riscrivi clr__sp__B per chiamare prima tsql__sp__A. – boj

2

Grazie Boj.

Tuttavia ho trovato che quando si utilizza con un "contesto connessioni = true" si apre tutto il SET

Read Bol Article

// La connessione di contesto permette di eseguire istruzioni SQL nello stesso contesto che il vostro il codice è stato invocato in primo luogo //

using (SqlConnection connection = new SqlConnection("context connection=true")) 
{ 
    connection.Open(); 
    // access #temp table 
} 
Problemi correlati