Come passare una variabile a una query di server collegato

Traduzione articoli Traduzione articoli
Identificativo articolo: 314520 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene descritto come passare una variabile a una query di server collegato.

Quando si esegue una query un server collegato, si esegue spesso una query pass-through che utilizza l'istruzione OPENQUERY, OPENROWSET o OPENDATASOURCE. È possibile visualizzare gli esempi nella documentazione in linea per vedere come utilizzando stringhe Transact-SQL predefinite, ma non vi sono non esempi su come passare una variabile a queste funzioni. In questo articolo vengono forniti tre esempi di passare una variabile a una query di server collegato.

Per passare una variabile a una delle funzioni di pass-through, è necessario creare una query dinamica.

I dati che includono quotazioni devono gestione particolare. Per ulteriori informazioni, vedere l'argomento di "Using char and varchar Data" nella documentazione in linea di SQL Server e vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito:
156501INF: QUOTED_IDENTIFIER e stringhe con apici

Passare valori di base

Quando l'istruzione Transact-SQL di base è noto, ma è necessario passare uno o più valori specifici, utilizzare codice simile a nell'esempio riportato di seguito:
      DECLARE @TSQL varchar(8000), @VAR char(2)
      SELECT  @VAR = 'CA'
      SELECT  @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')'
      EXEC (@TSQL)
				

Passare l'intera query

Quando è necessario passare nell'intera query di Transact-SQL o il nome del server collegato (o entrambi), utilizzare codice simile a nell'esempio riportato di seguito:
DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000)
SET @LinkedServer = 'MyLinkedServer'
SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ','''
SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')' 
EXEC (@OPENQUERY+@TSQL) 
				

Utilizzare il Sp_executesql Stored Procedure

Per evitare le virgolette multilivello, utilizzare codice simile a nell'esempio riportato di seguito:
DECLARE @VAR char(2)
SELECT  @VAR = 'CA'
EXEC MyLinkedServer.master.dbo.sp_executesql
     N'SELECT * FROM pubs.dbo.authors WHERE state = @state',
     N'@state char(2)',
     @VAR
				

Riferimenti

Per ulteriori informazioni, vedere i seguenti argomenti nella documentazione in linea di SQL Server:
"OPENROWSET"
"OPENQUERY"
"OPENDATASOURCE"
"Using sp_executesql"
"sp_executesql"

Proprietà

Identificativo articolo: 314520 - Ultima modifica: giovedì 22 dicembre 2005 - Revisione: 4.4
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Chiavi: 
kbmt kbhowtomaster KB314520 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 314520
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com