Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
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 usługi Azure SQL. Łą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 usługi Azure SQL. 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 Azure SQL aparat bazy danych Jet przechowuje informacje o połączeniu i metadane tabeli, ale dane są przechowywane w programie SQL Server lub usłudze Azure SQL. 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 usłudze Azure SQL.
Notatka
Jeśli używasz uwierzytelniania programu SQL Server, hasło jest przechowywane w postaci zwykłego tekstu w połączonych tabelach programu Access. Zamiast tego należy użyć uwierzytelniania systemu Windows.
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 dane nie są pobierane jednocześnie. Jednak podczas przeglądania tabeli program Access pobiera w razie potrzeby więcej danych.
Ważny
Aby połączyć tabele programu Access z bazą danych platformy Azure, potrzebujesz klienta SQL Server Native Client (SNAC) w wersji 10.5 lub nowszej. Uzyskaj najnowszą wersję funkcji SNAC z programu Microsoft SQL Server 2008 R2 Feature Pack. SNAC został usunięty w SQL Server 2022 (16.x).
Odłącz tabele programu Access
Po odłączeniu tabeli programu Access z programu SQL Server lub tabeli Azure SQL usługa SSMA przywraca oryginalną tabelę programu Access i jej dane.
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 połączysz tabele programu Access z jednym wystąpieniem programu SQL Server, a później chcesz zmienić łącza do innego wystąpienia, musisz ponownie połą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.
Wybierz przycisk Połącz ponownie z programem SQL Server .
Połącz się z wystąpieniem programu SQL Server lub usługą Azure SQL, 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 Połącz.
Aktualizowanie tabel połączonych
Jeśli zmienisz definicje tabel w SQL Server lub Azure SQL, możesz odłączyć, a następnie ponownie połączyć tabele w programie SSMA, korzystając z opisanych wcześniej w tym artykule procedur. Tabele można również zaktualizować przy użyciu programu Access.
Otwórz bazę danych programu Access.
Na liście Obiekty wybierz 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 wybierz 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 usługi Azure SQL, a następnie połącz tabele. W sekcjach opisano również przyczyny i rozwiązania tych problemów.
Niska wydajność z połączonymi tabelami
Przyczyna: Niektóre zapytania mogą być powolne po zmianie rozmiaru z następujących powodów:
Aplikacja zależy od funkcji, które nie istnieją w programie SQL Server ani usłudze Azure SQL. Jet ściąga tabele lokalnie, aby uruchomić
SELECTzapytanie.Jet wysyła zapytania, które aktualizują lub usuwają wiele wierszy 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. Należy zmodyfikować wynik zapytania lub dodać nowe rekordy w alternatywny sposób. Na przykład możesz mieć jawne przyciski Modyfikuj lub Dodaj w formularzu powiązanym z zapytaniem.
Zapytania przekazywane nie obsługują danych wejściowych użytkownika, ale niektóre zapytania wymagają danych wejściowych użytkownika. Możesz użyć języka Visual Basic for Applications (VBA), aby wyświetlić monit o parametry lub uzyskać dane wejściowe użytkownika przy użyciu formularza. W obu przypadkach kod VBA przesyła zapytanie z danymi wejściowymi użytkownika do serwera.
Kolumny autoinkrementacji nie są aktualizowane, dopóki rekord nie zostanie zaktualizowany
Przyczyna: Po wywołaniu RecordSet.AddNew w Jet, kolumna autoinkrementacji jest dostępna zanim rekord zostanie zaktualizowany. Ten warunek nie jest spełniony w programie SQL Server lub usłudze Azure SQL. Nowa wartość kolumny tożsamości jest dostępna tylko po zapisaniu nowego rekordu.
Rozwiązanie: Przed uzyskaniem dostępu do pola tożsamości uruchom następujący kod języka Visual Basic for Applications (VBA):
Recordset.Update
Recordset.Move 0,
Recordset.LastModified
Nowe rekordy nie są dostępne
Przyczyna: Jeśli dodasz rekord do tabeli SQL Server lub Azure SQL przy użyciu języka VBA, jeśli unikatowe pole indeksu tabeli ma wartość domyślną i nie przypiszesz wartości do tego pola, nowy rekord nie będzie wyświetlany do momentu ponownego otwarcia tabeli w programie SQL Server lub usłudze Azure SQL. 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 Azure SQL przy użyciu kodu VBA dołącz dbSeeChanges opcję, 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 dodawać nowych wartości przy użyciu zapytania.
Rozwiązanie: Upewnij się, że wszystkie kolumny zawarte w co najmniej jednym unikatowym indeksie są częścią zapytania.
Nie można zmodyfikować schematu tabeli połączonej przy użyciu programu Access
Przyczyna: Po przeprowadzeniu migracji danych i łączenia tabel nie można zmodyfikować schematu tabeli w programie Access.
Rozwiązanie: zmodyfikuj schemat tabeli przy użyciu programu SQL Server Management Studio, a następnie zaktualizuj link w programie Access.
Funkcja hiperłącza zostanie utracona po migracji danych
Przyczyna: Po przeprowadzeniu migracji danych hiperlinki w kolumnach tracą swoją funkcjonalność i stają się prostymi kolumnami nvarchar(max).
Rozwiązanie: Brak.
Program Access nie obsługuje niektórych typów danych programu SQL Server
Przyczyna: Jeśli zaktualizujesz tabele programu SQL Server lub Azure SQL tak, aby zawierały typy danych , których program Access nie obsługuje, nie możesz otworzyć tabeli w programie Access.
Rozwiązanie: Zdefiniuj zapytanie programu Access, które zwraca tylko wiersze z obsługiwanymi typami danych.