Aracılığıyla paylaş


Microsoft SQL Server'da şirket dışındaki sorguları çalıştırma

Bu makalede, Azure Databricks tarafından yönetilmeyen SQL Server verileri üzerinde federatif sorgular çalıştırmak amacıyla Lakehouse Federasyonu'nun nasıl set yapılacağı anlatılmaktadır. Lakehouse Federasyonu hakkında daha fazla bilgi edinmek için bkz . Lakehouse Federasyonu nedir?.

Lakehouse Federation kullanarak SQL Server veritabanınıza bağlanmak için Azure Databricks Unity Catalog meta veri deponuzda aşağıdakileri oluşturmanız gerekir:

  • SQL Server veritabanınıza bağlantı.
  • Unity catalog sorgu söz dizimini ve veri idare araçlarını kullanarak Azure Databricks kullanıcısının veritabanına erişimini yönetebilmeniz için Unity 'daki SQL Server veritabanınızı yansıtan Catalog.

Lakehouse Federation SQL Server, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği destekler.

Başlamadan önce

Çalışma alanı gereksinimleri:

  • Unity Catalogiçin çalışma alanı etkinleştirildi.

İşlem gereksinimleri:

  • İşlem kaynağınızdan hedef veritabanı sistemlerine ağ bağlantısı. Bkz . Lakehouse Federasyonu için ağ önerileri.
  • Azure Databricks işlem, Databricks Runtime 13.3 LTS veya üzerini kullanmalı ve Paylaşılan veya Tek kullanıcı erişim modunu .
  • SQL ambarları profesyonel veya sunucusuz olmalı ve 2023.40 veya üzerini kullanmalıdır.

Gerekli izinler:

  • Bağlantı oluşturmak için meta veri deposu yöneticisi veya çalışma alanına bağlı Unity CREATE CONNECTION meta veri deposunda Catalog ayrıcalığına sahip bir kullanıcı olmanız gerekir.
  • Yabancı catalogoluşturmak için, meta veri deposunda CREATE CATALOG iznine sahip olmanız ve bağlantının sahibi olmanız veya bağlantıda CREATE FOREIGN CATALOG ayrıcalığına sahip olmanız gerekir.

Aşağıdaki her görev tabanlı bölümde ek izin gereksinimleri belirtilir.

  • OAuth kullanarak kimlik doğrulaması yapmayı planlıyorsanız, Azure Databricks için Microsoft Entra Id'ye bir uygulama kaydedin. Ayrıntılar için aşağıdaki bölüme bakın.

(İsteğe bağlı) Azure Databricks için Microsoft Entra Id'ye uygulama kaydetme

OAuth kullanarak kimlik doğrulaması yapmak istiyorsanız, SQL Server bağlantısı oluşturmadan önce bu adımı izleyin. Bunun yerine kullanıcı adı ve parola kullanarak kimlik doğrulaması yapmak için bu bölümü atlayın.

  1. Azure Portal’ında oturum açın.
  2. Sol gezinti bölmesinde Microsoft Entra Id'ye tıklayın.
  3. Uygulama kayıtları'e tıklayın.
  4. Yeni kayıt'a tıklayın. Yeni uygulama için bir ad girin ve set URI'yi https://<workspace-url>/login/oauth/azure.html'e yönlendirin.
  5. Kaydet’e tıklayın.
  6. Temel Bileşenler kutusunda Uygulama (istemci) kimliğini kopyalayın ve depolayın. Uygulamayı yapılandırmak için bu değeri kullanacaksınız.
  7. Sertifikalar ve gizli diziler'e tıklayın.
  8. İstemci gizli dizileri sekmesinde Yeni istemci gizli dizisi'ne tıklayın.
  9. Gizli dizi ve süre sonu için bir açıklama girin (varsayılan ayar 180 gündür).
  10. Ekle'yi tıklatın.
  11. İstemci gizli dizisi için oluşturulan değeri kopyalayın.
  12. API izinleri'ne tıklayın.
  13. İzin ekle'ye tıklayın.
  14. Azure SQL Veritabanı ve Temsilci izinlerialtında user_impersonation'e tıklayın.
  15. İzin ekle'ye tıklayın.

Bağlantı oluşturma

Bağlantı, dış veritabanı sistemine erişmek için bir yol ve credentials belirtir. Bağlantı oluşturmak için Azure Databricks not defterinde veya Databricks SQL sorgu düzenleyicisinde Catalog Gezgini'ni veya CREATE CONNECTION SQL komutunu kullanabilirsiniz.

Not

Bağlantı oluşturmak için Databricks REST API'sini veya Databricks CLI'yi de kullanabilirsiniz. bkz. POST /api/2.1/unity-catalog/connections ve Unity Catalog komutları.

Gerekli izinler: Meta veri deposu yöneticisi veya ayrıcalığına CREATE CONNECTION sahip kullanıcı.

Catalog Gezgini

  1. Azure Databricks çalışma alanınızda simgesine tıklayın.

  2. Catalog bölmesinin üst kısmında Ekle veya artı simgesine tıklayın ve menüden selectBağlantı ekle'yi seçin.

    Alternatif olarak, Hızlı erişim sayfasında, Dış veri düğmesine tıklayın, Connections sekmesine gidin ve Bağlantı oluştur'ya tıklayın.

  3. Bağlantı temel bilgileri sayfasında, Set bağlantı sihirbazını açın ve kullanıcı dostu bir Bağlantı adıgirin.

  4. SQL ServerBağlantı türü .

  5. Select Kimlik Doğrulama türüOAuth veya Kullanıcı adı ve parola (temel kimlik doğrulama).

  6. (İsteğe bağlı) Açıklama ekleyin.

  7. İleriöğesine tıklayın.

  8. Kimlik Doğrulaması sayfasında SQL Server örneğinin aşağıdaki bağlantı özelliklerini girin. Seçtiğiniz kimlik doğrulama yöntemine özgü özelliklerden önce parantez içindeki Auth type eklenir.

    • Konak: SQL sunucunuz.
    • (Temel kimlik doğrulaması) Liman
    • (Temel kimlik doğrulaması) trustServerCertificate: varsayılan olarak kullanılır false. set'dan true'e kadar, aktarım katmanı kanalı şifrelemek için SSL kullanır ve güvenilirliği doğrulamak için sertifika zincirini atlar. Belirli bir durumda güven doğrulamasını aşmanız gerekmiyorsa, bu set'ı varsayılan olarak bırakın.
    • (Temel kimlik doğrulaması) Kullanıcı
    • (Temel kimlik doğrulaması) Parola
    • (OAuth) Yetkilendirme Uç Noktası: Azure Entra yetkilendirme uç noktanız biçimindedir https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize.
    • (OAuth) Oluşturduğunuz uygulamadan istemci kimliği .
    • (OAuth) Oluşturduğunuz istemci gizli dizisinden gelen istemci gizli dizisi.
    • (OAuth) OAuth kapsamı: Değişiklik yapmadan aşağıdaki değeri girin: https://database.windows.net/.default offline_access.
    • (OAuth) Azure Entra ID ile oturum aç'e tıklayın. Azure kullanıcı adınızı ve parolanızı girin. Kimlik Doğrulaması sayfasına yönlendirildikten sonra yetkilendirme kodu kullanıcı arabiriminde doldurulur.
  9. Bağlantıoluştur'a tıklayın.

  10. (Temel kimlik doğrulaması) Bağlantı ayrıntıları sayfasında aşağıdakileri belirtin:

    • Güven sunucusu sertifikası: Bu, varsayılan olarak seçili değildir. Aktarım katmanı seçildiğinde, kanalı şifrelemek için SSL kullanır ve güveni doğrulamak için sertifika zincirini atlar. Belirli bir durumda güven doğrulamasını aşmanız gerekmiyorsa, bu set'ı varsayılan olarak bırakın.
    • Uygulama amacı: Sunucuya bağlanırken uygulama iş yükü türü.
  11. İleriöğesine tıklayın.

  12. Catalog Temel Bilgiler sayfasında, yabancı catalogiçin bir ad girin. Dış veri sisteminde bir veritabanını yansıtan yabancı catalog, Azure Databricks ve Unity Catalogkullanarak bu veritabanındaki verilere sorgulama yapmanızı ve erişimi yönetmenizi sağlar.

  13. (İsteğe bağlı) Çalıştığını onaylamak için Bağlantıyı test et'e tıklayın.

  14. Oluştur catalog'ya tıklayın.

  15. Access sayfasında, kullanıcıların erişebileceği oluşturduğunuz select çalışma alanları catalog. Tüm çalışma alanlarının erişimi vardır, veya çalışma alanlarına ata'ya tıklayarak, çalışma alanlarını seçip, son olarak Ata'ya tıklayabilirsiniz.

  16. içindeki tüm nesnelere erişimi yönetebilecek Sahibini değiştirin. Metin kutusuna bir sorumlu yazmaya başlayın ve döndürülen sonuçlarda sorumluya tıklayın.

  17. üzerinde Ayrıcalıklar . Grantöğesine tıklayın:

    1. içindeki nesnelere erişimi olacak sorumluları belirtin. Metin kutusuna bir sorumlu yazmaya başlayın ve döndürülen sonuçlarda sorumluya tıklayın.
    2. Her sorumluya Select'dan 'e kadar grant olarak uygulayın. Tüm hesap kullanıcılarına varsayılan olarak BROWSE verilir.
      • Select Veri Okuyucusu açılan menüden grantnesnelerdeki readcatalog ayrıcalıklarına geçin.
      • Select .
      • select ayrıcalıklarını el ile grant'e ver.
    3. Grantöğesine tıklayın.
  18. İleriöğesine tıklayın.

  19. Meta Veri sayfasında, anahtar-değer çifti etiketlerini belirtin. Daha fazla bilgi için bkz. Unity'ye etiket uygulama Catalog güvenlik altına alınabilir nesneler.

  20. (İsteğe bağlı) Açıklama ekleyin.

  21. Kaydet'tıklayın.

Not

(OAuth) Azure Entra Id OAuth uç noktasına Azure Databricks denetim düzlemi IP'lerinden erişilebilir olmalıdır. Bkz. Azure Databricks bölgeleri.

SQL

Aşağıdaki komutu bir not defterinde veya Databricks SQL sorgu düzenleyicisinde çalıştırın.

CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

gibi hassas values için düz metin dizeleri yerine Azure Databricks credentials kullanmanızı öneririz. Örneğin:

CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

Gizli dizileri ayarlama hakkında bilgi için bkz . Gizli dizi yönetimi.

Yabancı bir catalog oluştur

Not

Kullanıcı arabirimini veri kaynağına bağlantı oluşturmak için kullanırsanız, yabancı catalog oluşturma dahil edilir ve bu adımı atlayabilirsiniz.

Dış veri sisteminde bir veritabanını yansıtan yabancı catalog, Azure Databricks ve Unity Catalogkullanarak bu veritabanındaki verilere sorgulama yapmanızı ve erişimi yönetmenizi sağlar. Yabancı bir catalogoluşturmak için, önceden tanımlanmış olan veri kaynağına bir bağlantı kullanırsınız.

Yabancı bir catalogoluşturmak için, Azure Databricks not defterinde veya SQL sorgu düzenleyicisinde Catalog Gezgini'ni veya CREATE FOREIGN CATALOG SQL komutunu kullanabilirsiniz.

catalogoluşturmak için Databricks REST API'sini veya Databricks CLI'yi de kullanabilirsiniz. bkz. POST /api/2.1/unity-catalog/catalogs ve Unity Catalog komutları.

gerekli izinler:CREATE CATALOG meta veri deposu üzerindeki izin ve bağlantının sahipliği veya CREATE FOREIGN CATALOG bağlantı üzerindeki ayrıcalık.

Catalog Gezgini

  1. Azure Databricks çalışma alanınızda Gezgini' açmak için simgesine tıklayın.

  2. bölmesinin üst kısmında Ekle veya artı simgesine tıklayın ekle simgesine tıklayın ve menüden ekle'yi .

    Alternatif olarak, Hızlı erişim sayfasında Catalogs düğmesine tıklayın ve ardından catalog oluştur düğmesine tıklayın.

  3. Yabancı catalogs oluşturma yönergelerini Oluşturma catalogs'nde izleyin.

SQL

Aşağıdaki SQL komutunu bir not defterinde veya SQL sorgu düzenleyicisinde çalıştırın. Köşeli ayraç içindeki öğeler isteğe bağlıdır. yer tutucu values'ı değiştirin.

  • <catalog-name>: Azure Databricks'teki catalog adı.
  • <connection-name>: veri kaynağını, yolu ve erişimi belirten credentials.
  • <database-name>: Azure Databricks'te catalog olarak yansıtmak istediğiniz veritabanının adı.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Desteklenen gönderimler

Aşağıdaki gönderimler tüm işlemlerde desteklenir:

  • Filtreler
  • Projeksiyonlar
  • Limit
  • İşlevler: kısmi, yalnızca filtre ifadeleri için. (Dize işlevleri, Matematiksel işlevler, Veri, Zaman ve Zaman Damgası işlevleri ve Alias, Cast, SortOrder gibi diğer çeşitli işlevler)

Aşağıdaki gönderimler Databricks Runtime 13.3 LTS ve üzeri ile SQL ambarı işlemlerinde desteklenir:

  • Toplamlar
  • Aşağıdaki Boole işleçleri: =, <, <=, >, >=, <=>
  • Aşağıdaki matematiksel işlevler (ANSI devre dışı bırakıldıysa desteklenmez): +, -, *, %, /
  • Aşağıdaki çeşitli işleçler: ^, |, ~
  • Sıralama, limit ile kullanıldığında

Aşağıdaki gönderimler desteklenmez:

  • Birleştirmeler
  • Windows işlevleri

Veri türü eşlemeleri

SQL Server'dan Spark'a okuma yaptığınızda veri türleri aşağıdaki gibi eşlenir:

SQL Server türü Spark türü
bigint (işaretsiz), ondalık, para, sayısal, smallmoney Ondalık Türü
smallint, tinyint ShortType
int IntegerType
bigint (imzalıysa) LongType
real FloatType
kayan noktalı sayı DoubleType
char, nchar, uniqueidentifier CharType
nvarchar, varchar VarcharType
metin, xml StringType
ikili, coğrafya, geometri, görüntü, zaman damgası, udt, varbinary BinaryType
bit BooleanType
tarih DateType
datetime, datetime, smalldatetime, time TimestampType/TimestampNTZType

*SQL Server'dan okurken, SQL Server datetimes (varsayılan) ise TimestampType Spark'a preferTimestampNTZ = false eşlenir. SQL Serverdatetimes, ise TimestampNTZTypeile preferTimestampNTZ = true eşlenir.