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.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri
OPENROWSET bağlı bir sunucudaki tablolara erişmeye alternatiftir ve uzak verilere bağlanmak ve bunlara erişmek için tek seferlik geçici bir yöntemdir.
OPENROWSET T-SQL komutu, dış veri kaynağından uzak verilere erişmek için gereken tüm bağlantı bilgilerini içerir.
OPENROWSET işlevine sorgunun FROM yan tümcesinde tablo adıymış gibi başvurulabilir. İşleve OPENROWSET , veri sağlayıcısının özelliklerine bağlı olarak bir INSERT, UPDATEveya DELETE deyiminin hedef tablosu olarak da başvurulabilir. Sorgu birden çok sonuç kümesi döndürebileceğinden OPENROWSET yalnızca ilkini döndürür.
Tip
Dış veri kaynaklarına daha sık başvurular için bunun yerine bağlı sunucuları kullanın. Daha fazla bilgi için bkz. Bağlı Sunucular (Veritabanı Altyapısı).
OPENROWSET
BULK işleci olmadan yalnızca SQL Server'da kullanılabilir. Diğer platformlardaki benzer örneklerin ayrıntıları ve bağlantıları:
-
OPENROWSETSQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Microsoft Fabric Veri Ambarı gibi birçok Veritabanı Altyapısı platformunda yerleşikBULKsağlayıcı aracılığıyla toplu işlemleri destekler. Daha fazla bilgi için bkz. OPENROWSET BULK (Transact-SQL).- Azure SQL Veritabanı örnekleri için bkz. Azure SQL Veritabanı ile veri sanallaştırma.
- Azure SQL Yönetilen Örneği örnekleri için bkz. Azure SQL Yönetilen Örneği ile veri sanallaştırma.
- Azure Synapse'te sunucusuz SQL havuzlarıyla ilgili bilgi ve örnekler için bkz. Azure Synapse Analytics'te sunucusuz SQL havuzu kullanarak OPENROWSET'i kullanma. Azure Synapse'teki ayrılmış SQL havuzları
OPENROWSETişlevini desteklemez.
Transact-SQL söz dizimi kuralları
Syntax
dış veri kaynaklarını sorgulamak için OPENROWSET söz dizimi kullanılır:
OPENROWSET
( 'provider_name'
, { 'datasource' ; 'user_id' ; 'password' | 'provider_string' }
, { [ catalog. ] [ schema. ] object | 'query' }
)
Arguments
'provider_name'
Kayıt defterinde belirtildiği gibi veri sağlayıcısının kolay adını (veya PROGID) temsil eden karakter dizesi.
provider_name varsayılan değeri yoktur. Sağlayıcı adı örnekleri MSOLEDBSQL, Microsoft.Jet.OLEDB.4.0veya MSDASQL.
'datasource'
Belirli bir veri kaynağına karşılık gelen dize sabiti.
veri kaynağı, sağlayıcıyı başlatmak için sağlayıcının DBPROP_INIT_DATASOURCE arabirimine geçirilecek IDBProperties özelliğidir. Bu dize genellikle veritabanı dosyasının adını, veritabanı sunucusunun adını veya sağlayıcının veritabanını veya veritabanlarını bulmak için anladığı bir adı içerir.
Veri kaynağı, C:\SAMPLES\Northwind.mdb' sağlayıcısı için dosya yolu Microsoft.Jet.OLEDB.4.0 veya Server=Seattle1;Trusted_Connection=yes; sağlayıcı için bağlantı dizesi MSOLEDBSQL olabilir.
'user_id'
Belirtilen veri sağlayıcısına geçirilen kullanıcı adı olan dize sabiti.
user_id bağlantının güvenlik bağlamını belirtir ve sağlayıcıyı başlatmak için DBPROP_AUTH_USERID özelliği olarak geçirilir.
user_id Microsoft Windows oturum açma adı olamaz.
'password'
Veri sağlayıcısına geçirilecek kullanıcı parolası olan dize sabiti.
parola, sağlayıcı başlatılırken DBPROP_AUTH_PASSWORD özelliği olarak geçirilir.
parola Microsoft Windows parolası olamaz. Örneğin:
SELECT a.* FROM OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'C:\SAMPLES\Northwind.mdb';
'<user name>';
'<password>',
Customers
) AS a;
'provider_string'
OLE DB sağlayıcısını başlatmak için DBPROP_INIT_PROVIDERSTRING özelliği olarak geçirilen sağlayıcıya özgü bağlantı dizesi.
provider_string genellikle sağlayıcıyı başlatmak için gereken tüm bağlantı bilgilerini kapsüller.
SQL Server Yerel İstemci OLE DB sağlayıcısının tanıdığı anahtar sözcüklerin listesi için bkz. Başlatma ve Yetkilendirme Özellikleri (Yerel İstemci OLE DB Sağlayıcısı). SQL Server Native Client (genellikle kısaltılmış SNAC)
SELECT d.* FROM OPENROWSET(
'MSOLEDBSQL',
'Server=Seattle1;Trusted_Connection=yes;',
Department
) AS d;
[ katalog. ] [ şema. ] nesne
OPENROWSET okuması gereken verileri içeren uzak tablo veya görünüm. Aşağıdaki bileşenlere sahip üç parçalı ad nesnesi olabilir:
- katalog (isteğe bağlı) - belirtilen nesnenin bulunduğu kataloğun veya veritabanının adı.
- şema (isteğe bağlı) - belirtilen nesne için şemanın veya nesne sahibinin adı.
- nesne: Çalışacak nesneyi benzersiz olarak tanımlayan nesne adı.
SELECT d.* FROM OPENROWSET(
'MSOLEDBSQL',
'Server=Seattle1;Trusted_Connection=yes;',
AdventureWorks2022.HumanResources.Department
) AS d;
'query'
Sağlayıcı tarafından gönderilen ve yürütülen bir dize sabiti. SQL Server'ın yerel örneği bu sorguyu işlemez, ancak doğrudan sorgu olan sağlayıcı tarafından döndürülen sorgu sonuçlarını işler. Doğrudan sorgular tablosal verilerini tablo adları aracılığıyla değil, yalnızca bir komut dili aracılığıyla kullanıma hazır hale getiren sağlayıcılarda kullanıldığında kullanışlıdır. Sorgu sağlayıcısı OLE DB Command nesnesini ve zorunlu arabirimlerini desteklediği sürece doğrudan sorgular uzak sunucuda desteklenir.
Daha fazla bilgi için bkz. SQL Server Yerel İstemcisi (OLE DB) Arabirimleri.
SELECT a.*
FROM OPENROWSET(
'MSOLEDBSQL',
'Server=Seattle1;Trusted_Connection=yes;',
'SELECT TOP 10 GroupName, Name FROM AdventureWorks2022.HumanResources.Department'
) AS a;
Remarks
OPENROWSET ole db veri kaynaklarından uzak verilere erişmek için 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 kullanılabilir. Bu seçenekler ayarlanmamışsa, varsayılan davranış geçici erişime izin vermez.
Uzak OLE DB veri kaynaklarına eriştiğiniz zaman, güvenilen bağlantıların oturum açma kimliği, istemcinin sorgulanan sunucuya bağlı olduğu sunucudan otomatik olarak temsilci seçmez. Kimlik doğrulaması temsilcisinin yapılandırılması gerekir.
Veri sağlayıcısı belirtilen veri kaynağında birden çok kataloğu ve şemayı destekliyorsa katalog ve şema adları gereklidir. veri sağlayıcısı bunları desteklemediğinde ve catalog değerleri schema atlanabilir. Sağlayıcı yalnızca şema adlarını destekliyorsa formun schema.object iki bölümden oluşan bir adı belirtilmelidir. Sağlayıcı yalnızca katalog adlarını destekliyorsa formun catalog.schema.object üç bölümden oluşan bir adı belirtilmelidir. Daha fazla bilgi için bkz.
SQL Server Yerel İstemci OLE DB sağlayıcısını kullanan doğrudan sorgular için üç bölümlü adlar gereklidir.
OPENROWSET bağımsız değişkenleri kabul etmez.
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
OPENROWSET izinleri, veri sağlayıcısına geçirilen kullanıcı adının izinlerine göre belirlenir.
Limitations
Microsoft Access Veritabanı Altyapısı sürücüsünde desteklenmez.
Examples
Bu bölümde, OPENROWSET'in nasıl kullanılacağını gösteren genel örnekler sağlanmaktadır.
Note
kullanarak INSERT...SELECT * FROM OPENROWSET(BULK...)gösteren örnekler için bkz. OPENROWSET BULK (Transact-SQL).
SQL Server Native Client (genellikle kısaltılmış SNAC)
A. SELECT ve SQL Server Yerel İstemci OLE DB Sağlayıcısı ile OPENROWSET kullanma
Aşağıdaki örnek, uzak sunucu HumanResources.DepartmentAdventureWorks2025 veritabanındaki Seattle1 tablosuna erişmek için SQL Server Yerel İstemci OLE DB sağlayıcısını kullanır. (yerini MSOLEDBSQLalan modern Microsoft SQL Server OLE DB Veri Sağlayıcısı için kullanınSQLNCLI.) 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 Yerel İstemci OLE DB sağlayıcısı tarafından tanınır.
SELECT a.*
FROM OPENROWSET(
'MSOLEDBSQL', 'Server=Seattle1;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks2022.HumanResources.Department
ORDER BY GroupName, Name'
) AS a;
B. Jet için Microsoft OLE DB Sağlayıcısı'nı kullanma
Aşağıdaki örnek, Jet için Microsoft OLE DB Sağlayıcısı aracılığıyla Microsoft Access Customers veritabanındaki Northwind tablosuna erişir.
Note
Bu örnekte, Microsoft Access'in yüklü olduğu varsayılır. Bu örneği çalıştırmak için Northwind veritabanını yüklemeniz gerekir.
SELECT CustomerID, CompanyName
FROM OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
'admin';'',
Customers
);
C. INNER JOIN'te OPENROWSET ve başka bir tablo kullanma
Aşağıdaki örnek, SQL Server Customers veritabanının Northwind yerel örneğinden tablodan ve aynı bilgisayarda depolanan Microsoft Access Orders veritabanındaki Northwind tablodan tüm verileri seçer.
Note
Bu örnekte, Microsoft Access'in yüklü olduğu varsayılır. Bu örneği çalıştırmak için Northwind veritabanını yüklemeniz gerekir.
USE Northwind;
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c
INNER JOIN OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'',
Orders) AS o
ON c.CustomerID = o.CustomerID;
İlgili içerik
- SILME (Transact-SQL)
- FROM yan tümcesi artı JOIN, APPLY, PIVOT (Transact-SQL)
- INSERT (Transact-SQL)
- AÇIK DATASOURCE (Transact-SQL)
- OPENQUERY (Transact-SQL)
- SEÇ (Transact-SQL)
- sp_addlinkedserver (Transact-SQL)
- sp_serveroption (Transact-SQL)
- GÜNCELLEME (Transact-SQL)
- BURADA (Transact-SQL)