Aracılığıyla paylaş


Microsoft Entra Id kullanma

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

OLE DB sürücüsünü indirme

Amaç

18.2.1 sürümünden başlayarak SQL Server için Microsoft OLE DB Sürücüsü, OLE DB uygulamalarının federasyon kimliği kullanarak Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Azure Synapse Analytics ve Microsoft Fabric'e bağlanmasına olanak tanır.

Microsoft Entra kimlik doğrulama yöntemleri şunlardır:

  • Kullanıcı adı ve parola
  • Erişim belirteci
  • Tümleşik kimlik doğrulaması

Sürüm 18.3.0 , aşağıdaki Microsoft Entra kimlik doğrulama yöntemleri için destek ekler:

Sürüm 18.5.0 , aşağıdaki kimlik doğrulama yöntemi için destek ekler:

  • Microsoft Entra hizmet sorumlusu kimlik doğrulaması

Uyarı

aşağıdaki kimlik doğrulama modlarının DataTypeCompatibility (veya buna karşılık gelen özelliğinin) olarak ayarlanması 80desteklenmez :

  • Kullanıcı adı ve parola kullanarak Microsoft Entra kimlik doğrulaması
  • Erişim belirtecini kullanarak Microsoft Entra kimlik doğrulaması
  • Microsoft Entra tümleşik kimlik doğrulaması
  • Microsoft Entra etkileşimli kimlik doğrulaması
  • Microsoft Entra yönetilen kimlik doğrulaması
  • Microsoft Entra hizmet sorumlusu kimlik doğrulaması

Microsoft Entra kimlik doğrulamasını kullanmak için Azure SQL veri kaynağınızı yapılandırmanız gerekir. Daha fazla bilgi için bkz. Azure SQL ile Microsoft Entra kimlik doğrulamasını yapılandırma ve yönetme.

Bağlantı dizesi anahtar sözcükleri ve özellikleri

Microsoft Entra kimlik doğrulamasını desteklemek için aşağıdaki bağlantı dizesi anahtar sözcükleri kullanıma sunulmuştur:

Bağlantı dizesi anahtar sözcüğü Bağlantı özelliği Description
Erişim Belirteci SSPROP_AUTH_ACCESS_TOKEN Microsoft Entra ID kimlik doğrulaması için bir erişim belirteci belirtir.
Authentication SSPROP_AUTH_MODE Kullanılacak kimlik doğrulama yöntemini belirtir.

Yeni anahtar sözcükler/özellikler hakkında daha fazla bilgi için aşağıdaki sayfalara bakın:

Şifreleme ve sertifika doğrulama

Daha fazla bilgi için bkz . Şifreleme ve sertifika doğrulaması .

GUI eklemeleri

Sürücü grafik kullanıcı arabirimi, Microsoft Entra kimlik doğrulamasına izin verecek şekilde geliştirilmiştir. Daha fazla bilgi için bakınız:

Örnek bağlantı dizeleri

Bu bölümde IDataInitialize::GetDataSource ve DBPROP_INIT_PROVIDERSTRING özellikleriyle kullanılacak yeni ve mevcut bağlantı dizesi anahtar sözcüklerinin örnekleri gösterilir.

SQL kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:
    • Yeni:

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=SqlPassword; Kullanıcı Kimliği=[kullanıcıadı]; Password=[password]; Veri için Şifrelemeyi Kullanma=Zorunlu

    • Kullanımdan Kaldırılmış

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Kullanıcı Kimliği=[kullanıcıadı]; Password=[password]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:
    • Yeni:

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Authentication=SqlPassword; UID=[kullanıcıadı]; PWD=[parola]; Encrypt=Zorunlu

    • Kullanımdan Kaldırıldı

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; UID=[kullanıcıadı]; PWD=[parola]; Encrypt=Zorunlu

Güvenlik Desteği Sağlayıcısı Arabirimi (SSPI) kullanarak tümleşik Windows kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:
    • Yeni:

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryIntegrated; Veri için Şifrelemeyi Kullanma=Zorunlu

    • Artık Kullanılmıyor:

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Tümleşik Güvenlik=SSPI; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:
    • Yeni:

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Kimlik Doğrulama=ActiveDirectoryIntegrated; Şifreleme=Zorunlu

    • Kaldırıl -mış:

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Trusted_Connection=evet; Encrypt=Zorunlu

Microsoft Entra kullanıcı adı ve parola kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryPassword; Kullanıcı Kimliği=[kullanıcıadı]; Password=[password]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    Sunucu=[sunucu]; Veritabanı=[veritabanı]; Authentication=ActiveDirectoryPassword; UID=[kullanıcıadı]; PWD=[parola]; Encrypt=Zorunlu

Microsoft Entra tümleşik kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryIntegrated; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    Sunucu=[sunucu]; Veritabanı=[veritabanı]; Kimlik Doğrulama=ActiveDirectoryIntegrated; Şifreleme=Zorunlu

Erişim belirteci kullanarak Microsoft Entra kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Erişim Belirteci=[erişim belirteci]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    DBPROP_INIT_PROVIDERSTRING üzerinden erişim belirteci sağlanması desteklenmiyor

Microsoft Entra etkileşimli kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryInteractive; Kullanıcı Kimliği=[kullanıcıadı]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    Sunucu=[sunucu]; Veritabanı=[veritabanı]; Authentication=ActiveDirectoryInteractive; UID=[kullanıcıadı]; Encrypt=Zorunlu

Microsoft Entra yönetilen kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:
    • Kullanıcı tarafından atanan yönetilen kimlik:

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryMSI; Kullanıcı Kimliği=[Nesne Kimliği]; Veri için Şifrelemeyi Kullanma=Zorunlu

    • Sistem tarafından atanan yönetilen kimlik:

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryMSI; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:
    • Kullanıcı tarafından atanan yönetilen kimlik:

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Kimlik Doğrulama=ActiveDirectoryMSI; UID=[Nesne Kimliği]; Şifreleme=Zorunlu

    • Sistem tarafından atanan yönetilen kimlik:

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Kimlik Doğrulama=ActiveDirectoryMSI; Şifreleme=Zorunlu

Microsoft Entra hizmet sorumlusu kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; Başlangıç Kataloğu=[veritabanı]; Authentication=ActiveDirectoryServicePrincipal; Kullanıcı Kimliği=[Uygulama (istemci) Kimliği]; Parola=[Uygulama (istemci) gizli dizisi]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    Sunucu=[sunucu]; Veritabanı=[veritabanı]; Authentication=ActiveDirectoryServicePrincipal; UID=[Uygulama (istemci) kimliği]; PWD=[Uygulama (istemci) gizli dizisi]; Encrypt=Zorunlu

Kod örnekleri

Aşağıdaki örneklerde bağlantı anahtar sözcükleriyle Microsoft Entra ID'ye bağlanmak için gereken kod gösterilmektedir.

Erişim Belirteci

#include <string>
#include <iostream>
#include <msdasc.h>

int main()
{
    wchar_t azureServer[] = L"server";
    wchar_t azureDatabase[] = L"mydatabase";
    wchar_t accessToken[] = L"eyJ0eXAiOi...";
    IDBInitialize *pIDBInitialize = nullptr;
    IDataInitialize* pIDataInitialize = nullptr;
    HRESULT hr = S_OK;

    CoInitialize(nullptr);

    // Construct the connection string.
    std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" + 
                              std::wstring(azureDatabase) + L";Access Token=" + accessToken + L";Use Encryption for Data=Mandatory;";
    hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER, 
                          IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
    if (FAILED(hr))
    {
        std::cout << "Failed to create an IDataInitialize instance." << std::endl;
        goto Cleanup;
    }
    hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(), 
                                         IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
    if (FAILED(hr))
    {
        std::cout << "Failed to get data source object." << std::endl;
        goto Cleanup;
    }
    hr = pIDBInitialize->Initialize();
    if (FAILED(hr))
    {
        std::cout << "Failed to establish connection." << std::endl;
        goto Cleanup;
    }

Cleanup:
    if (pIDBInitialize)
    {
        pIDBInitialize->Uninitialize();
        pIDBInitialize->Release();
    }
    if (pIDataInitialize)
    {
        pIDataInitialize->Release();
    }

    CoUninitialize();
}

Active Directory ile Entegre

#include <string>
#include <iostream>
#include <msdasc.h>

int main()
{
    wchar_t azureServer[] = L"server";
    wchar_t azureDatabase[] = L"mydatabase";
    IDBInitialize *pIDBInitialize = nullptr;
    IDataInitialize* pIDataInitialize = nullptr;
    HRESULT hr = S_OK;

    CoInitialize(nullptr);

    // Construct the connection string.
    std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" + 
                              std::wstring(azureDatabase) + L";Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory;";

    hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER, 
                          IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
    if (FAILED(hr)) 
    {
        std::cout << "Failed to create an IDataInitialize instance." << std::endl;
        goto Cleanup;
    }
    hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(), 
                                         IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
    if (FAILED(hr))
    {
        std::cout << "Failed to get data source object." << std::endl;
        goto Cleanup;
    }
    hr = pIDBInitialize->Initialize();
    if (FAILED(hr))
    {
        std::cout << "Failed to establish connection." << std::endl;
        goto Cleanup;
    }

Cleanup:
    if (pIDBInitialize)
    {
        pIDBInitialize->Uninitialize();
        pIDBInitialize->Release();
    }
    if (pIDataInitialize)
    {
        pIDataInitialize->Release();
    }

    CoUninitialize();
}