Aracılığıyla paylaş


Bağlı sunucu sorgusuna değişken geçirme

Bu makalede, bağlı bir sunucu sorgusuna değişken geçirme açıklanmaktadır.

Özgün ürün sürümü: SQL Server Books Online
Özgün KB numarası: 314520

Özet

Bağlı bir sunucuyu sorguladığınızda, sık sık , OPENROWSETveya OPENDATASOURCE deyimini OPENQUERYkullanan bir doğrudan sorgu gerçekleştirirsiniz. Önceden tanımlanmış Transact-SQL dizelerini kullanarak bunu nasıl yapacağınızı görmek için SQL Server Books Online'daki örnekleri görüntüleyebilirsiniz, ancak bu işlevlere bir değişken geçirme örnekleri yoktur. Bu makalede, bir değişkeni bağlı sunucu sorgusuna geçirmeye yönelik üç örnek sağlanır.

Geçiş işlevlerinden birine değişken geçirmek için dinamik bir sorgu oluşturmanız gerekir.

Tırnak işareti içeren tüm verilerin belirli bir işlemeye ihtiyacı vardır.

Temel değerleri geçirme

Temel Transact-SQL deyimi biliniyorsa ancak bir veya daha fazla belirli değer geçirmeniz gerektiğinde, aşağıdaki örneğe benzer bir kod kullanın:

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)

Sorgunun tamamını geçirme

Transact-SQL sorgusunun tamamını veya bağlı sunucunun adını (veya her ikisini) geçirmeniz gerektiğinde, aşağıdaki örneğe benzer bir kod kullanın:

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)

saklı Sp_executesql yordamını kullanma

Çok katmanlı tırnak işaretinden kaçınmak için aşağıdaki örneğe benzer bir kod kullanın:

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

Ayrıca bkz:

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: