Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
W Eksploratorze metadanych programu Access wybierz tabele, które chcesz połączyć.
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
W Eksploratorze metadanych programu Access wybierz tabele, które chcesz odłączyć.
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
W Eksploratorze metadanych programu Access wybierz tabele, które chcesz odłączyć.
Kliknij prawym przyciskiem myszy Tabele, a następnie wybierz Odłącz.
Kliknij przycisk Połącz ponownie z programem SQL Server.
Połącz się z wystąpieniem programu SQL Server lub usługą SQL Azure, z którym chcesz połączyć tabele programu Access.
W Eksploratorze metadanych programu Access wybierz tabele, które chcesz połączyć.
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
Otwórz bazę danych programu Access.
Na liście obiektów , kliknij pozycję Tabele.
Kliknij prawym przyciskiem myszy tabelę połączoną, a następnie wybierz pozycję Połączony menedżer tabel.
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.
Funkcja hiperłącza zostanie utracona po migracji danych
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.