Udostępnij za pośrednictwem


Łączenie aplikacji programu Access z programem SQL Server — Azure SQL Database (AccessToSQL)

Jeśli chcesz używać istniejących aplikacji programu Access z programem SQL Server, możesz połączyć oryginalne tabele programu Access z migrowanym programem SQL Server lub tabelami sql azure. Łączenie modyfikuje bazę danych programu Access, aby zapytania, formularze, raporty i strony dostępu do danych używały danych w programie SQL Server lub usłudze Azure SQL Database zamiast danych w bazie danych programu Access.

Notatka

Tabele programu Access pozostają w programie Access, ale nie są aktualizowane razem z aktualizacjami programu SQL Server lub programu SQL Azure. Po łączeniu tabel i zweryfikowaniu funkcjonalności możesz usunąć tabele programu Access.

Łączenie tabel programu Access i programu SQL Server

Po połączeniu tabeli Programu Access z tabelą SQL Server lub SQL Azure aparat bazy danych Jet przechowuje informacje o połączeniu i metadane tabeli, ale dane są przechowywane w programie SQL Server lub usłudze SQL Azure. To łączenie umożliwia aplikacjom programu Access działanie względem tabel programu Access, nawet jeśli rzeczywiste tabele i dane znajdują się w programie SQL Server lub na platformie SQL Azure.

Notatka

Jeśli używasz uwierzytelniania programu SQL Server, hasło jest przechowywane w postaci zwykłego tekstu w połączonych tabelach programu Access. Zalecamy używanie uwierzytelniania systemu Windows.

Aby połączyć tabele

  1. W Eksploratorze metadanych programu Access wybierz tabele, które chcesz połączyć.

  2. Kliknij prawym przyciskiem myszy tabele, a następnie wybierz Połącz.

Program SQL Server Migration Assistant (SSMA) dla programu Access tworzy kopię zapasową oryginalnej tabeli programu Access i tworzy połączoną tabelę.

Gdy połączysz tabele, w programie SSMA pojawi się przy nich mała ikona linku. W programie Access tabele są wyświetlane z ikoną "połączoną", która jest kulą globusu ze strzałką wskazującą ją.

Po otwarciu tabeli w programie Access dane są pobierane przy użyciu kursora zestawu kluczy. W związku z tym w przypadku dużych tabel wszystkie dane nie są pobierane jednocześnie. Jednak podczas przeglądania tabeli program Access pobiera dodatkowe dane zgodnie z potrzebami.

Ważny

Aby połączyć tabele dostępu z bazą danych platformy Azure, potrzebujesz programu SQL Server Native Client (SNAC) w wersji 10.5 lub nowszej.
Najnowszą wersję SNAC można uzyskać z Microsoft SQL Server 2008 R2 Feature Pack.

Odłączanie tabel programu Access

Po odłączeniu tabeli programu Access z tabeli sql Server lub SQL Azure usługa SSMA przywraca oryginalną tabelę programu Access i jej dane.

Aby odłączyć tabele

  1. W Eksploratorze metadanych programu Access wybierz tabele, które chcesz odłączyć.

  2. Kliknij prawym przyciskiem myszy Tabele, a następnie wybierz Odłącz.

Łączenie tabel z innym serwerem

Jeśli tabele programu Access zostały połączone z jednym wystąpieniem programu SQL Server, a później chcesz zmienić łącza do innego wystąpienia, należy ponownie połączyć tabele.

Aby połączyć tabele z innym serwerem

  1. W Eksploratorze metadanych programu Access wybierz tabele, które chcesz odłączyć.

  2. Kliknij prawym przyciskiem myszy Tabele, a następnie wybierz Odłącz.

  3. Kliknij przycisk Połącz ponownie z programem SQL Server.

  4. Połącz się z wystąpieniem programu SQL Server lub usługą SQL Azure, z którym chcesz połączyć tabele programu Access.

  5. W Eksploratorze metadanych programu Access wybierz tabele, które chcesz połączyć.

  6. Kliknij prawym przyciskiem myszy tabele, a następnie wybierz pozycję Połącz.

Aktualizowanie tabel połączonych

Jeśli definicje tabel programu SQL Server lub SQL Platformy Azure zostały zmienione, możesz odłączyć i ponownie połączyć tabele w programie SSMA, korzystając z procedur przedstawionych wcześniej w tym temacie. Tabele można również zaktualizować przy użyciu programu Access.

Aby zaktualizować tabele połączone przy użyciu programu Access

  1. Otwórz bazę danych programu Access.

  2. Na liście obiektów , kliknij pozycję Tabele.

  3. Kliknij prawym przyciskiem myszy tabelę połączoną, a następnie wybierz pozycję Połączony menedżer tabel.

  4. Zaznacz pole wyboru obok każdej połączonej tabeli, którą chcesz zaktualizować, a następnie kliknij przycisk OK.

Możliwe problemy po migracji

W poniższych sekcjach wymieniono problemy, które mogą wystąpić w istniejących aplikacjach programu Access po przeprowadzeniu migracji baz danych z programu Access do programu SQL Server lub sql Azure, a następnie połączyć tabele wraz z przyczynami i rozwiązaniami.

Niska wydajność z połączonymi tabelami

Przyczyna: Niektóre zapytania mogą być powolne po zwiększeniu rozmiaru z następujących powodów:

  • Aplikacja zależy od funkcji, które nie istnieją w programie SQL Server lub SQL Azure, co powoduje, że Jet ściąga tabele lokalnie i uruchamia zapytanie SELECT.

  • Zapytania, które aktualizują lub usuwają wiele wierszy, są wysyłane przez jet jako sparametryzowane zapytanie dla każdego wiersza.

Rozwiązanie: Przekonwertuj wolno działające zapytania na zapytania przekazywane, procedury składowane lub widoki. Konwertowanie na zapytania przekazywane ma następujące problemy:

  • Nie można modyfikować zapytań przekazywanych. Modyfikowanie wyniku zapytania lub dodawanie nowych rekordów musi być wykonywane w alternatywny sposób, na przykład przez jawne przyciski Modyfikuj lub Dodaj w formularzu, który jest powiązany z zapytaniem.

  • Niektóre zapytania wymagają wprowadzania danych przez użytkownika, ale zapytania przekazywane tego nie obsługują. Dane wejściowe użytkownika można uzyskać za pomocą kodu języka VISUAL Basic for Applications (VBA), który wyświetla monit o parametry lub za pomocą formularza używanego jako kontrolka danych wejściowych. W obu przypadkach kod VBA przesyła zapytanie z danymi wejściowymi użytkownika do serwera.

Kolumny automatycznego zwiększania nie są aktualizowane, dopóki rekord nie zostanie zaktualizowany

Przyczyna: po wywołaniu RecordSet.AddNew w systemie Jet kolumna z automatycznym przyrostem jest dostępna, zanim rekord zostanie zaktualizowany. Nie jest to prawdą w programie SQL Server lub usłudze SQL Azure. Nowa wartość kolumny tożsamości nowa wartość jest dostępna dopiero po zapisaniu nowego rekordu.

Rozwiązanie: Uruchom następujący kod języka Visual Basic for Applications (VBA) przed uzyskaniem dostępu do pola tożsamości:

Recordset.Update  
Recordset.Move 0,  
Recordset.LastModified  

Nowe rekordy są niedostępne

Przyczyna: Po dodaniu rekordu do tabeli programu SQL Server lub sql platformy Azure przy użyciu języka VBA, jeśli unikatowe pole indeksu tabeli ma wartość domyślną i nie przypisujesz wartości do tego pola, nowy rekord nie będzie wyświetlany do momentu ponownego otwarcia tabeli w programie SQL Server lub usłudze SQL Azure. Jeśli spróbujesz uzyskać wartość z nowego rekordu, zostanie wyświetlony następujący komunikat o błędzie:

Run-time error '3167' Record is deleted.

Rozwiązanie: Po otwarciu tabeli sql Server lub SQL Azure przy użyciu kodu VBA dołącz opcję dbSeeChanges, jak w poniższym przykładzie:

Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)

Po migracji niektóre zapytania nie zezwalają użytkownikowi na dodawanie nowego rekordu

Przyczyna: Jeśli zapytanie nie zawiera wszystkich kolumn uwzględnionych w indeksie unikatowym, nie można dodać nowych wartości przy użyciu zapytania.

Rozwiązanie: Upewnij się, że wszystkie kolumny zawarte w co najmniej jednym indeksie są częścią zapytania.

Nie można zmodyfikować schematu tabeli połączonej za pomocą programu Access

Przyczyna: Po migracji danych i łączenia tabel użytkownik nie może zmodyfikować schematu tabeli w programie Access.

Rozwiązanie: zmodyfikować schemat tabeli przy użyciu programu SQL Server Management Studio, a następnie zaktualizować link w programie Access.

Przyczyna: Po migracji danych hiperlinki w kolumnach tracą funkcjonalność i stają się prostymi kolumnami nvarchar(max).

rozwiązanie: Brak.

Niektóre typy danych programu SQL Server nie są obsługiwane przez program Access

Przyczyna: Jeśli później zaktualizujesz tabele programu SQL Server lub SQL Azure tak, aby zawierały typy danych, które nie są obsługiwane przez program Access, nie można otworzyć tabeli w programie Access.

Rozwiązanie: Można zdefiniować zapytanie programu Access, które zwraca tylko te wiersze z obsługiwanymi typami danych.

Zobacz też

migrowanie baz danych dostępu do programu SQL Server