Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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: