Aracılığıyla paylaş


AÇIK DATASOURCE (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

Bağlı sunucu adı kullanmadan dört bölümlü nesne adının parçası olarak geçici bağlantı bilgileri sağlar.

Transact-SQL söz dizimi kuralları

Syntax

OPENDATASOURCE ( 'provider_name', 'init_string' )  

Arguments

'provider_name'

Veri kaynağına erişmek için kullanılan OLE DB sağlayıcısının PROGID'i olarak kaydedilen ad. provider_name , varsayılan değeri olmayan bir char veri türüdür.

Important

SQL Server Native Client (genellikle kısaltılmış SNAC) SQL Server 2022 (16.x) ve SQL Server Management Studio 19'dan (SSMS) kaldırılmıştır. Hem SQL Server Yerel İstemci OLE DB sağlayıcısı (SQLNCLI veya SQLNCLI11) hem de SQL Server için eski Microsoft OLE DB Sağlayıcısı (SQLOLEDB) yeni geliştirme için önerilmez. İleride SQL Server için yeni Microsoft OLE DB Sürücüsüne (MSOLEDBSQL) geçin.

'init_string'

Hedef sağlayıcının IDataInitialize arabirimine geçirilen bağlantı dizesi. Sağlayıcı dizesi söz dizimi, noktalı virgülle ayrılmış anahtar sözcük-değer çiftlerini temel alır, örneğin: 'keyword1=value;keyword2=value'.

Sağlayıcıda desteklenen belirli anahtar sözcük-değer çiftleri için bkz. Microsoft Veri Erişim SDK'sı. Bu belge temel söz dizimini tanımlar. Aşağıdaki tabloda , init_string bağımsız değişkeninde en sık kullanılan anahtar sözcükler listelenir.

Keyword OLE DB özelliği Geçerli değerler ve açıklama
Veri Kaynağı DBPROP_INIT_DATASOURCE Bağlanacak veri kaynağının adı. Farklı sağlayıcılar bunu farklı şekillerde yorumlar. SQL Server Yerel İstemci OLE DB sağlayıcısı için bu, sunucunun adını gösterir. Jet OLE DB sağlayıcısı için bu, .mdb dosyasının veya .xls dosyasının tam yolunu gösterir.
Location DBPROP_INIT_LOCATION Bağlanacak veritabanının konumu.
Genişletilmiş Özellikler DBPROP_INIT_PROVIDERSTRING Sağlayıcıya özgü bağlantı dizesi.
Bağlantı zaman aşımı DBPROP_INIT_TIMEOUT Bağlantı denemesinin başarısız olduğu zaman aşımı değeri.
Kullanıcı kimliği DBPROP_AUTH_USERID Bağlantı için kullanılacak kullanıcı kimliği.
Password DBPROP_AUTH_PASSWORD Bağlantı için kullanılacak parola.
Catalog DBPROP_INIT_CATALOG Veri kaynağına bağlanırken ilk veya varsayılan kataloğun adı.
Tümleşik Güvenlik DBPROP_AUTH_INTEGRATED SSPI, Windows Kimlik Doğrulamasını belirtmek için

Remarks

OPENROWSET sütunlar için harmanlama kümesinden bağımsız olarak her zaman örnek harmanlamasını devralır.

OPENDATASOURCE yalnızca Belirtilen sağlayıcı için DisallowAdhocAccess kayıt defteri seçeneği açıkça 0 olarak ayarlandığında ve Geçici Dağıtılmış Sorgular gelişmiş yapılandırma seçeneği etkinleştirildiğinde OLE DB veri kaynaklarından uzak verilere erişmek için kullanılabilir. Bu seçenekler ayarlanmadığında, varsayılan davranış geçici erişime izin vermez.

İşlev, OPENDATASOURCE bağlı sunucu adıyla aynı Transact-SQL söz dizimi konumlarında kullanılabilir. Bu nedenle, SELECT, INSERT, OPENDATASOURCE UPDATE veya DELETE deyimindeki bir tabloya veya görünüm adına başvuran dört parçalı bir adın ilk bölümü olarak veya EXECUTE deyimindeki uzak saklı yordam için kullanılabilir. Uzak saklı yordamlarda başka OPENDATASOURCE bir SQL Server örneğine başvurmalıdır. OPENDATASOURCE bağımsız değişkenleri kabul etmez.

İşlevde olduğu OPENROWSET gibi, OPENDATASOURCE yalnızca seyrek erişilen OLE DB veri kaynaklarına başvurmalıdır. Birden çok kez erişilen tüm veri kaynakları için bağlı bir sunucu tanımlayın. Ne OPENDATASOURCE ne de OPENROWSET, güvenlik yönetimi ve katalog bilgilerini sorgulama gibi bağlı sunucu tanımlarının tüm işlevlerini sağlamaz. OpenDATASOURCE her çağrıldığında parolalar da dahil olmak üzere tüm bağlantı bilgileri sağlanmalıdır.

Important

Windows Kimlik Doğrulaması, SQL Server Kimlik Doğrulaması'dan çok daha güvenlidir. Mümkün olduğunda Windows Kimlik Doğrulaması kullanmalısınız. OPENDATASOURCE bağlantı dizesinde açık parolalarla kullanılmamalıdır.

Her sağlayıcının bağlantı gereksinimleri, bağlı sunucular oluşturulurken bu parametrelerin gereksinimlerine benzer. Birçok yaygın sağlayıcının ayrıntıları sp_addlinkedserver (Transact-SQL) makalesinde listelenmiştir.

OPENDATASOURCE yan tümcesindeki OPENQUERY, OPENROWSETveya FROM çağrıları, iki çağrıya aynı bağımsız değişkenler sağlansa bile güncelleştirmenin hedefi olarak kullanılan bu işlevlere yapılan çağrılardan ayrı ve bağımsız olarak değerlendirilir. Özellikle, bu çağrılardan birinin sonucuna uygulanan filtre veya birleştirme koşullarının diğerinin sonuçları üzerinde hiçbir etkisi yoktur.

Permissions

Tüm kullanıcılar OPENDATASOURCE yürütebilir. Uzak sunucuya bağlanmak için kullanılan izinler bağlantı dizesinden belirlenir.

Limitations

Microsoft Access Veritabanı Altyapısı sürücüsünde desteklenmez.

Examples

A. SELECT ve SQL Server OLE DB Sürücüsü ile OPENDATASOURCE Kullanma

Aşağıdaki örnek, uzak sunucudaki veritabanındaki HumanResources.Department tabloya erişmek AdventureWorks2025Seattle1 kullanır. SELECT Döndürülen satır kümesini tanımlamak için bir deyim kullanılır. Sağlayıcı dizesi Server ve Trusted_Connection anahtar sözcüklerini içerir. Bu anahtar sözcükler SQL Server OLE DB Sürücüsü tarafından tanınır.

SELECT GroupName, Name, DepartmentID  
FROM OPENDATASOURCE('MSOLEDBSQL', 'Server=Seattle1;Database=AdventureWorks2022;TrustServerCertificate=Yes;Trusted_Connection=Yes;').HumanResources.Department  
ORDER BY GroupName, Name;  

B. SELECT ve SQL Server OLE DB Sağlayıcısı ile OPENDATASOURCE kullanma

Aşağıdaki örnek, sunucusundaki PayrollLondonSQL Server örneğine geçici bir bağlantı oluşturur ve tabloyu sorgular AdventureWorks2022.HumanResources.Employee .

Note

SQLNCLI'nin kullanılması SQL Server'ı SQL Server Yerel İstemci OLE DB Sağlayıcısı'nın en son sürümüne yönlendirir. OLE DB sağlayıcısının kayıt defterinde belirtilen PROGID ile kaydedilmesi beklenir.

Important

SQL Server Yerel İstemci OLE DB sağlayıcısı (SQLNCLI) kullanım dışı kalır ve yeni geliştirme çalışmaları için kullanılması önerilmez. Bunun yerine, en son sunucu özellikleriyle güncelleştirilecek sql server (MSOLEDBSQL) için yeni Microsoft OLE DB Sürücüsünü kullanın.

SELECT *  
FROM OPENDATASOURCE('SQLNCLI',  
    'Data Source=London\Payroll;Integrated Security=SSPI')  
    .AdventureWorks2022.HumanResources.Employee;  

C. Jet için Microsoft OLE DB Sağlayıcısı'nı kullanma

Aşağıdaki örnek, 1997 - 2003 biçiminde bir Excel elektronik tablosuna geçici bir bağlantı oluşturur.

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',  
    'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;  

Sonraki Adımlar