Testowanie łączności OLE DB z programem SQL Server przy użyciu pliku UDL

Dotyczy: SQL Server

Summary

W tym artykule wyjaśniono, jak utworzyć plik Universal Data Link (UDL) i użyć go do testowania łączności Object Linking and Embedding Database (OLE DB) z wystąpieniem SQL Server. Plik UDL umożliwia sprawdzenie połączenia (nazywanego również łączem danych) niezależnie od aplikacji, dzięki czemu można zawęzić, czy awaria połączenia odnosi się do sterownika, sieci czy parametrów połączenia aplikacji. Możesz przetestować Microsoft OLE DB Driver for SQL Server, starszego dostawcę Microsoft OLE DB Provider for SQL Server, starszego dostawcę Microsoft OLE DB provider for (ODBC) drivers oraz dowolnego innego dostawcę OLE DB zainstalowanego w systemie. W tym artykule pokazano również, jak przetestować dostawców 32-bitowych w 64-bitowym systemie Windows i jak odizolować typowe problemy z połączeniem.

Ten artykuł jest przeznaczony dla administratorów baz danych i deweloperów, którzy muszą diagnozować błędy połączenia z SQL Server z komputera klienckiego z systemem Windows.

Tworzenie pliku UDL

Plik UDL umożliwia testowanie łączności dostawcy OLE DB z dowolną bazą danych zaplecza niezależnie od pełnej aplikacji. Podczas zapisywania pliku UDL generowany jest prawidłowo sformułowany parametry połączenia. Za pomocą tego ciągu można utworzyć parametry połączenia aplikacji lub sprawdzić, jak ustawić różne właściwości. Aby uzyskać łańcuch, otwórz plik UDL w edytorze tekstów (np. Notatnik).

Aby utworzyć plik UDL w celu przetestowania dostawcy OLE DB, wykonaj następujące kroki:

  1. Aby wyświetlić rozszerzenia plików w Eksplorator plików, wykonaj następujące kroki:

    1. Wybierz pozycję Start, a następnie wprowadź opcje Eksplorator plików.

    2. Wybierz kartę Widok , usuń zaznaczenie opcji Ukryj rozszerzenia dla znanych typów plików, a następnie wybierz przycisk OK.

  2. Przejdź do folderu, w którym chcesz utworzyć plik UDL. Na przykład C:\temp.

  3. Utwórz nowy plik tekstowy (na przykład sqlconn.txt), a następnie zmień nazwę rozszerzenia z .txt na .udl. (Wybierz Tak do komunikatu ostrzegawczego o zmianie rozszerzenia nazwy pliku).

    Alternatywnie użyj następującego skryptu programu PowerShell, aby utworzyć go w folderze %temp% i otworzyć. Skrypt ustawia nazwę serwera na (local). Zmień wartość $ServerName, aby przetestować inny serwer.

    clear
    $ServerName = "(local)"
    $UDL_String = "[oledb]`r`n; Everything after this line is an OLE DB initstring`r`nProvider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID=`"`";Initial Catalog=`"`";Data Source=" + $ServerName + ";Initial File Name=`"`";Server SPN=`"`";Authentication=`"`";Access Token=`"`""
    Set-Content -Path ($env:temp + "\sqlconn.udl") -Value $UDL_String -Encoding Unicode
    
    #open the UDL
    Invoke-Expression ($env:temp + "\sqlconn.udl")
    

Przetestuj połączenie przy użyciu Microsoft OLE DB Driver for SQL Server

Użyj tej procedury, gdy aplikacja łączy się z SQL Server za pośrednictwem sterownika lub dostawcy OLE DB dla SQL Server.

Microsoft OLE DB Driver for SQL Server jest obecnym sterownikiem OLE DB dla programu SQL Server. Bieżąca wersja sterownika jest rejestrowana jako MSOLEDBSQL19. Sterownik obsługuje nowsze funkcje, takie jak TLS 1.2 i 1.3, MultiSubnetFailover i metody uwierzytelniania Microsoft Entra. Użyj tego sterownika dla nowszych baz danych SQL Server.

Starszy dostawca Microsoft OLE DB (SQLOLEDB) nie jest już obsługiwany i nie jest zalecany do nowych prac programistycznych, dlatego używaj go tylko do odtworzenia sposobu, w jaki istniejąca aplikacja się łączy.

Aby przetestować połączenie przy użyciu sterownika lub dostawcy OLE DB firmy Microsoft dla programu SQL Server, wykonaj następujące kroki:

  1. Otwórz plik UDL.

  2. Wybierz kartę Dostawca , wybierz sterownik lub dostawcę OLE DB, którego używasz w aplikacji, a następnie wybierz przycisk Dalej.

  3. Na karcie Połączenie określ protokół sieciowy, w pełni kwalifikowaną nazwę domeny (FQDN) i numer portu w obszarze Wybierz lub wprowadź nazwę serwera. Na przykład tcp:SQLProd01.contoso.com,1433.

    Uwaga

    Ten sposób wprowadzania nazwy serwera i portu pozwala uniknąć typowych problemów (takich jak problemy z usługą SQL Server Browser), które mogą zakłócać połączenie.

  4. Wprowadź inne właściwości na karcie Połączenie .

    Uwaga

    Większość testów połączenia nie wymaga wprowadzenia nazwy bazy danych.

  5. Wybierz pozycję Testuj połączenie.

Możesz również wybrać inne karty i eksplorować inne ustawienia sterowników. Po zakończeniu testu połączenia wybierz przycisk OK, aby zapisać parametry połączenia w pliku UDL.

Uwaga

Jeśli test ze sterownikiem Microsoft OLE DB Driver 19 for SQL Server kończy się niepowodzeniem z powodu błędu certyfikatu lub szyfrowania, sprawdź, czy zaawansowane właściwości Szyfrowanie połączenia i Ufaj certyfikatowi serwera są obsługiwane i zgodne z konfiguracją szyfrowania SQL Server. Zalecaną konfiguracją jest zainstalowanie na serwerze certyfikatu, który klient może zweryfikować. Wybierz pozycję Ufaj certyfikatowi serwera tylko jako tymczasowy krok diagnostyczny. Aby uzyskać więcej informacji, zobacz Szyfrowanie i walidacja certyfikatu w OLE DB Driver for SQL Server.

Przetestuj połączenie przy użyciu dostawcy Microsoft OLE DB dla sterowników ODBC

Użyj tej procedury, aby przetestować sterownik Open Database Connectivity (ODBC) za pośrednictwem dostawcy Microsoft OLE DB dla sterowników ODBC. Aby uruchomić test, wykonaj następujące kroki:

  1. Otwórz plik UDL.

  2. Wybierz pozycję Dostawca>Microsoft OLE DB Provider for ODBC Drivers>Dalej.

  3. Na karcie Połączenie użyj jednej z następujących metod, aby określić źródło danych, a następnie wprowadź inne właściwości:

    • Wprowadź wartość w polu Użyj nazwy źródła danych.

    • Alternatywnie w Use parametry połączenia właściwości wprowadź parametry połączenia bez nazwy DSN, na przykład Driver={ODBC Driver 18 for SQL Server};Server=(local);Database=tempdb;Trusted_Connection=Yes;Encrypt=Optional.

  4. Wybierz pozycję Testuj połączenie.

Uwaga

Sterownik ODBC 18 dla SQL Server domyślnie szyfruje połączenia. Jeśli test zakończy się niepowodzeniem z powodu błędu certyfikatu, upewnij się, że serwer ma certyfikat, który klient może zweryfikować. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z szyfrowaniem połączeń w sterowniku ODBC.

Testowanie dostawców 32-bitowych w 64-bitowym systemie Windows

Ta procedura służy do testowania 32-bitowego dostawcy OLE DB w 64-bitowym systemie operacyjnym. Aby uruchomić test, wykonaj następujące kroki:

  1. W oknie wiersza polecenia uruchom następujące polecenie, aby otworzyć 32-bitowy wiersz polecenia:

    %windir%\SysWoW64\cmd.exe
    
  2. Uruchom następujące polecenie, aby otworzyć plik UDL:

    C:\temp\sqlconn.udl
    
  3. Sprawdź kartę Dostawca. Jeśli na liście jest Microsoft Jet 4.0 OLE DB Provider, załadowano 32-bitowe okno dialogowe. Teraz możesz wybrać dostawcę 32-bitowego, aby przetestować połączenie.

Uruchamianie pliku UDL

Kliknij dwukrotnie plik UDL, aby go uruchomić. W tej sekcji opisano proces leżący u podstaw, którego system Windows używa do uruchamiania pliku UDL.

Interfejs użytkownika pliku UDL jest udostępniany przez OLEDB32.DLL i hostowany w RUNDLL32.EXE. Użyj jednego z następujących poleceń, w zależności od systemu operacyjnego i dostawcy. W przykładach przyjęto założenie, że plik UDL to C:\temp\sqlconn.udl.

  • W przypadku 32-bitowych systemów operacyjnych lub 64-bitowych sterowników w 64-bitowych systemach operacyjnych:

    Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\temp\sqlconn.udl

  • W przypadku dostawców 32-bitowych w 64-bitowych systemach operacyjnych:

    C:\Windows\SysWOW64\Rundll32.exe "C:\Program Files (x86)\Common Files\system\Ole DB\oledb32.dll",OpenDSLFile C:\temp\sqlconn.udl

    Uwaga

    Aby zapewnić pomyślne uruchomienie, nie ujmuj ścieżki do pliku UDL C:\temp\sqlconn.udl w cudzysłów.

Aby przetestować 32-bitowych dostawców w 64-bitowym systemie operacyjnym, możesz otworzyć 32-bitowy wiersz polecenia i uruchomić polecenie C:\TEMP\SQLCONN.UDL.

  1. Wybierz Start - >Uruchom.
  2. Wprowadź %windir%\SysWOW64\cmd.exe i wybierz przycisk OK.
  3. Uruchom C:\TEMP\SQLCONN.UDL.

Opcjonalnie możesz utworzyć mapowanie rozszerzeń plików , które używa 32-bitowego polecenia.

Tworzenie 32-bitowego mapowania rozszerzenia pliku UDL32

Jeśli często używasz dostawców 32-bitowych w 64-bitowym systemie operacyjnym, możesz mapować nowe rozszerzenie pliku (na przykład .udl32), aby uruchomić 32-bitowe okno dialogowe UDL. Skorzystaj z poniższych instrukcji.

Ważne

Ten dział, metoda lub zadanie zawiera kroki, które wyjaśniają, jak zmodyfikować rejestr. Mogą jednak wystąpić poważne problemy, jeśli nieprawidłowo zmodyfikujesz rejestr. Dlatego upewnij się, że dokładnie przestrzegasz tych kroków. Aby uzyskać dodatkową ochronę, należy przed rozpoczęciem wykonania tej modyfikacji wykonać kopię zapasową rejestru, aby rejestr mógł zostać przywrócony w przypadku wystąpienia problemu. Aby uzyskać więcej informacji o tym, jak wykonać kopię zapasową i przywrócić rejestr, zobacz Jak wykonać kopię zapasową i przywrócić rejestr w Windows.

  1. Skopiuj następujący skrypt do Notatnika i zapisz go jako udl32.reg.

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\.UDL32]
    @="ft000001"
    
    [HKEY_CLASSES_ROOT\ft000001]
    @="Microsoft Data Link 32"
    "BrowserFlags"=dword:00000008
    "EditFlags"=dword:00000000
    
    [HKEY_CLASSES_ROOT\ft000001\shell]
    @="open"
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open]
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open\command]
    @="C:\\Windows\\SysWOW64\\Rundll32.exe \"C:\\Program Files (x86)\\Common Files\\system\\Ole DB\\oledb32.dll\",OpenDSLFile %1"
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open\ddeexec]
    
  2. Kliknij dwukrotnie plik .reg , aby utworzyć klucz rejestru, który ułatwia automatyczne uruchamianie plików UDL32.

  3. Utwórz plik z rozszerzeniem . udl32 . Na przykład C:\temp\test.udl32.

  4. Kliknij dwukrotnie plik test.udl32 , aby uruchomić 32-bitowe okno dialogowe UDL. Na przykład może zostać wyświetlone okno dialogowe podobne do następującego:

    Zrzut ekranu przedstawia przykład 32-bitowego okna dialogowego UDL.

Rozwiązywanie problemów z nieudanymi testami połączenia

Jeśli test połączenia UDL zakończy się niepowodzeniem, użyj następujących metod, aby dowiedzieć się, dlaczego. Wypróbuj każdą metodę oddzielnie i porównaj wyniki.

  • Zmień dostawcę.
  • Zmień protokół. Na przykład, tcp:, np: lub lpc:.
  • Przetestuj połączenie z pełnym sufiksem domeny lub bez niego, albo przy użyciu samego adresu IP.
  • Usuń numer portu i użyj nazwy wystąpienia, aby przetestować usługę SQL Server Browser.

Jeśli jedna kombinacja działa, a druga kończy się niepowodzeniem, różnica może dać wskazówki dotyczące problemu. Jeśli na przykład lpc: działa, ale tcp: nie, włącz protokół TCP w SQL Server Configuration Manager.

Jeśli ten artykuł nie rozwiąże problemu, zobacz Rozwiązywanie problemów z łącznością w SQL Server, aby uzyskać więcej pomocy.