Udostępnij przez


Synchronizacja pakietów języka R dla programu SQL Server

Dotyczy: SQL Server 2017 (14.x)

Wersja revoScaleR zawarta w programie SQL Server 2017 obejmuje możliwość synchronizowania kolekcji pakietów języka R między systemem plików a wystąpieniem i bazą danych, w której są używane pakiety.

Udostępniono tę funkcję, aby ułatwić tworzenie kopii zapasowych kolekcji pakietów języka R skojarzonych z bazami danych programu SQL Server. Korzystając z tej funkcji, administrator może przywrócić nie tylko bazę danych, ale także wszystkie pakiety języka R, które były używane przez analityków danych pracujących w tej bazie danych.

W tym artykule opisano funkcję synchronizacji pakietów oraz sposób użycia funkcji rxSyncPackages do wykonywania następujących zadań:

  • Synchronizowanie listy pakietów dla całej bazy danych programu SQL Server

  • Synchronizowanie pakietów używanych przez pojedynczego użytkownika lub przez grupę użytkowników

  • Jeśli użytkownik przejdzie do innego programu SQL Server, możesz utworzyć kopię zapasową działającej bazy danych użytkownika i przywrócić ją na nowym serwerze, a pakiety dla użytkownika zostaną zainstalowane w systemie plików na nowym serwerze, zgodnie z wymaganiami języka R.

Na przykład możesz użyć synchronizacji pakietów w następujących scenariuszach:

  • Administrator bazy danych przywrócił wystąpienie programu SQL Server na nową maszynę i prosi użytkowników o nawiązanie połączenia z klientów języka R i uruchomienie polecenia rxSyncPackages w celu odświeżenia i przywrócenia pakietów.

  • Uważasz, że pakiet języka R w systemie plików jest uszkodzony, więc działasz rxSyncPackages na serwerze SQL Server.

Requirements

Aby można było korzystać z synchronizacji pakietów, musisz mieć odpowiednią wersję języka Microsoft R. Ta funkcja jest dostępna w wersji 9.1.0 lub nowszej firmy Microsoft R.

Należy również włączyć funkcję zarządzania pakietami na serwerze.

Określanie, czy serwer obsługuje zarządzanie pakietami

Ta funkcja jest dostępna w programie SQL Server 2017 (14.x) i nowszych wersjach.

Włączanie funkcji zarządzania pakietami

Aby korzystać z synchronizacji pakietów, należy włączyć nową funkcję zarządzania pakietami w wystąpieniu programu SQL Server i w poszczególnych bazach danych. Aby uzyskać więcej informacji, zobacz Włączanie lub wyłączanie zarządzania pakietami dla programu SQL Server.

  1. Administrator serwera włącza funkcję dla instancji SQL Server.
  2. Dla każdej bazy danych administrator przyznaje poszczególnym użytkownikom możliwość instalowania lub udostępniania pakietów języka R przy użyciu ról bazy danych.

Po wykonaniu tej czynności można użyć funkcji RevoScaleR, takich jak rxInstallPackages , aby zainstalować pakiety w bazie danych. Informacje o użytkownikach i pakietach, których mogą używać, są przechowywane w wystąpieniu programu SQL Server.

Za każdym razem, gdy dodasz nowy pakiet przy użyciu funkcji zarządzania pakietami, zarówno rekordy w programie SQL Server, jak i systemie plików są aktualizowane. Te informacje mogą służyć do przywracania informacji o pakiecie dla całej bazy danych.

Permissions

  • Osoba wykonująca funkcję synchronizacji pakietów musi być uprawnionym podmiotem zabezpieczeń w wystąpieniu SQL Server oraz w bazie danych, która zawiera te pakiety.

  • Wywołujący funkcję musi być członkiem jednej z tych ról zarządzania pakietami: rpkgs-shared lub rpkgs-private.

  • Aby zsynchronizować pakiety oznaczone jako udostępnione, osoba, która uruchamia funkcję, musi mieć członkostwo w roli rpkgs-shared, a przenoszone pakiety muszą zostać zainstalowane w bibliotece o zakresie współdzielonym.

  • Aby zsynchronizować pakiety oznaczone jako prywatne, właściciel pakietu lub administrator musi uruchomić funkcję, a pakiety muszą być prywatne.

  • Aby synchronizować pakiety w imieniu innych użytkowników, właściciel musi być członkiem roli bazy danych db_owner .

Jak działa synchronizacja pakietów

Aby użyć synchronizacji pakietów, wywołaj polecenie rxSyncPackages, która jest nową funkcją w programie RevoScaleR.

Dla każdego wywołania rxSyncPackages należy określić wystąpienie SQL Server i bazę danych. Następnie wyświetl listę pakietów do synchronizacji lub określ zakres pakietu.

  1. Utwórz kontekst obliczeniowy programu SQL Server przy użyciu RxInSqlServer funkcji . Jeśli nie określisz kontekstu obliczeniowego, zostanie użyty bieżący kontekst obliczeniowy.

  2. Podaj nazwę bazy danych dla wystąpienia w określonym kontekście obliczeniowym. Pakiety są synchronizowane dla każdej bazy danych.

  3. Określ pakiety do synchronizacji przy użyciu argumentu zakresu.

    Jeśli używasz zakresu prywatnego , synchronizowane są tylko pakiety należące do określonego właściciela. Jeśli określisz zakres udostępniony , wszystkie pakiety inne niż prywatne w bazie danych zostaną zsynchronizowane.

    Jeśli uruchamiasz funkcję bez określania zakresu prywatnego lub współużytkowanego , wszystkie pakiety są synchronizowane.

  4. Jeśli polecenie zakończy się pomyślnie, istniejące pakiety w systemie plików zostaną dodane do bazy danych z określonym zakresem i właścicielem.

    Jeśli system plików jest uszkodzony, pakiety są przywracane na podstawie listy przechowywanej w bazie danych.

    Jeśli funkcja zarządzania pakietami nie jest dostępna w docelowej bazie danych, zostanie zgłoszony błąd: "Funkcja zarządzania pakietami nie jest włączona w programie SQL Server lub wersja jest zbyt stara"

Przykład 1. Synchronizowanie wszystkich pakietów według bazy danych

Ten przykład pobiera wszystkie nowe pakiety z lokalnego systemu plików i instaluje pakiety w bazie danych [TestDB]. Ponieważ żaden właściciel nie jest określony, lista zawiera wszystkie pakiety, które zostały zainstalowane dla zakresów prywatnych i udostępnionych.

connectionString <- "Driver=SQL Server;Server=myServer;Database=TestDB;Trusted_Connection=True;"
computeContext <- RxInSqlServer(connectionString = connectionString )
rxSyncPackages(computeContext=computeContext, verbose=TRUE)

Przykład 2. Ograniczanie synchronizowanych pakietów według zakresu

Poniższe przykłady synchronizują tylko pakiety w określonym zakresie.

#Shared scope
rxSyncPackages(computeContext=computeContext, scope="shared", verbose=TRUE)

#Private scope
rxSyncPackages(computeContext=computeContext, scope="private", verbose=TRUE)

Przykład 3. Ograniczanie synchronizowanych pakietów przez właściciela

W poniższym przykładzie pokazano, jak synchronizować tylko pakiety zainstalowane dla określonego użytkownika. W tym przykładzie użytkownik jest identyfikowany przez nazwę logowania SQL user1.

rxSyncPackages(computeContext=computeContext, scope="private", owner = "user1", verbose=TRUE))

Zarządzanie pakietami języka R dla programu SQL Server