Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Eine Variable an eine verknüpfte Serverabfrage übergeben wird.
Originalproduktversion: SQL Server Books Online
Ursprüngliche KB-Nummer: 314520
Zusammenfassung
Wenn Sie einen verknüpften Server abfragen, führen Sie häufig eine Pass-Through-Abfrage aus, die die OPENQUERY
, OPENROWSET
oder OPENDATASOURCE
Anweisung verwendet. Sie können die Beispiele in SQL Server-Büchern Online anzeigen, um zu sehen, wie dies mithilfe vordefinierter Transact-SQL-Zeichenfolgen zu tun ist, aber es gibt keine Beispiele dafür, wie eine Variable an diese Funktionen übergeben wird. Dieser Artikel enthält drei Beispiele zum Übergeben einer Variablen an eine verknüpfte Serverabfrage.
Um eine Variable an eine der Pass-Through-Funktionen zu übergeben, müssen Sie eine dynamische Abfrage erstellen.
Alle Daten, die Angebote enthalten, benötigen eine besondere Handhabung.
Übergeben grundlegender Werte
Wenn die grundlegende Transact-SQL-Anweisung bekannt ist, Sie aber einen oder mehrere spezifische Werte übergeben müssen, verwenden Sie Code, der dem folgenden Beispiel ähnelt:
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)
Übergeben der gesamten Abfrage
Wenn Sie die gesamte Transact-SQL-Abfrage oder den Namen des verknüpften Servers (oder beides) übergeben müssen, verwenden Sie Code, der dem folgenden Beispiel ähnelt:
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)
Verwenden der gespeicherten Sp_executesql Prozedur
Um die mehrschichtigen Anführungszeichen zu vermeiden, verwenden Sie Code, der dem folgenden Beispiel ähnelt:
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
Weitere Informationen
Weitere Informationen finden Sie in den folgenden Themen: