Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Zawarta baza danych to baza danych odizolowana od innych baz danych oraz od egzemplarza programu SQL Server, który hostuje bazę danych. Program SQL Server pomaga użytkownikowi odizolować bazę danych od wystąpienia na 4 sposoby.
Większość metadanych opisujących bazę danych jest przechowywana w bazie danych. (Oprócz lub zamiast obsługi metadanych w bazie danych głównej).
Wszystkie metadane są definiowane przy użyciu tego samego sortowania.
Uwierzytelnianie użytkownika może być wykonywane przez bazę danych, co zmniejsza zależność bazy danych od mechanizmów logowania wystąpienia programu SQL Server.
Środowisko programu SQL Server (DMV, XEvents itp.) dostarcza raporty i może operować na podstawie informacji dotyczących środowiska uruchomieniowego.
Niektóre funkcje częściowo zawartych baz danych, takie jak przechowywanie metadanych w bazie danych, mają zastosowanie do wszystkich baz danych programu SQL Server. Niektóre korzyści wynikające z częściowo zawartych baz danych, takich jak uwierzytelnianie na poziomie bazy danych i sortowanie wykazu, muszą być włączone, zanim będą dostępne. Częściowe zawieranie jest włączone przy użyciu instrukcji CREATE DATABASE i ALTER DATABASE lub przy użyciu programu SQL Server Management Studio. Aby uzyskać więcej informacji na temat włączania częściowego zawierania bazy danych, zobacz temat Migrowanie do częściowo zawartej bazy danych.
Pojęcia dotyczące częściowo zawartej bazy danych
W pełni zawarta baza danych zawiera wszystkie ustawienia i metadane wymagane do zdefiniowania bazy danych i nie jest zależna od konfiguracji instancji modułu Database Engine programu SQL Server, w której zainstalowano bazę danych. W poprzednich wersjach programu SQL Server oddzielenie bazy danych od wystąpienia programu SQL Server może być czasochłonne i wymaga szczegółowej wiedzy na temat relacji między bazą danych a wystąpieniem programu SQL Server. Bazy danych z częściową izolacją ułatwiają oddzielenie bazy danych od instancji programu SQL Server i innych baz danych.
Zawarta baza danych uwzględnia cechy związane z ograniczaniem. Każda jednostka zdefiniowana przez użytkownika, która opiera się tylko na funkcjach znajdujących się w bazie danych, jest uważana za w pełni zawartą. Każda jednostka zdefiniowana przez użytkownika, która opiera się na funkcjach znajdujących się poza bazą danych, jest uważana za niekontenowaną. (Aby uzyskać więcej informacji, zobacz sekcję Ograniczenie w późniejszej części tego tematu).
Poniższe terminy dotyczą zawartego modelu bazy danych.
Granica bazy danych
Granica między bazą danych a wystąpieniem programu SQL Server. Granica między bazą danych a innymi bazami danych.
Zawarte
Element, który istnieje całkowicie na granicy bazy danych.
Nieograniczone
Element, który przekracza granicę bazy danych.
Niepowiązana baza danych
Baza danych, której poziom izolacji jest ustawiony na NONE. Wszystkie bazy danych w wersjach starszych niż SQL Server 2012 (11.x) nie są zawarte. Domyślnie wszystkie bazy danych programu SQL Server 2012 (11.x) i nowsze mają wartość NONE.
Częściowo izolowana baza danych
Częściowo zawarta baza danych jest zawartą bazą danych, która może zezwalać na niektóre funkcje, które przekraczają granicę bazy danych. Program SQL Server umożliwia określenie, kiedy granica objęcia jest przekraczana.
Zawarty użytkownik
Istnieją dwa typy użytkowników dla zawartych baz danych.
Użytkownik zawartej bazy danych z hasłem
Użytkownicy zawartej bazy danych z hasłami są uwierzytelniani przez bazę danych. Aby uzyskać więcej informacji, zobacz Użytkownicy Zamkniętej Bazy Danych — Uczynienie Twojej Bazy Danych Przenośną.
Podmioty zabezpieczeń systemu Windows
Autoryzowani użytkownicy systemu Windows i członkowie autoryzowanych grup systemu Windows mogą łączyć się bezpośrednio z bazą danych i nie muszą logować się w bazie danych master . Baza danych ufa uwierzytelnieniu przez system Windows.
Użytkownicy na podstawie logowań w bazie danych master mogą uzyskać dostęp do zawartej bazy danych, ale spowoduje to utworzenie zależności od instancji SQL Server. W związku z tym tworzenie użytkowników na podstawie identyfikatorów logowania wymaga częściowego ograniczenia.
Ważne
Włączenie baz danych o częściowej zawartości przenosi kontrolę nad dostępem do instancji programu SQL Server na właścicieli tych baz danych. Aby uzyskać więcej informacji, zobacz Najlepsze praktyki bezpieczeństwa w bazach danych z ograniczeniami.
Granica bazy danych
Ponieważ częściowo zawarte bazy danych oddzielają funkcjonalność bazy danych od tych wystąpienia, istnieje jasno zdefiniowana linia między tymi dwoma elementami nazywanymi granicą bazy danych.
Wewnątrz granicy bazy danych jest model bazy danych, w którym bazy danych są opracowywane i zarządzane. Przykłady obiektów znajdujących się wewnątrz bazy danych obejmują tabele systemowe, takie jak sys.tables, użytkowników bazy danych z hasłami oraz tabele użytkowników w bieżącej bazie danych, do których się odwołuje za pomocą nazwy dwuczęściowej.
Poza granicą bazy danych znajduje się model zarządzania, który dotyczy funkcji związanych z zarządzaniem na poziomie instancji. Przykłady jednostek znajdujących się poza granicą bazy danych obejmują tabele systemowe, takie jak sys.endpoints, użytkownicy mapowane na identyfikatory logowania i tabele użytkowników w innej bazie danych, do których odwołuje się trzyczęściowa nazwa.
Powstrzymanie
Jednostki użytkownika, które znajdują się w całości w bazie danych, są uznawane za zawarte. Wszystkie jednostki znajdujące się poza bazą danych lub polegają na interakcji z funkcjami poza bazą danych, są uznawane za niekontenowane.
Ogólnie rzecz biorąc, jednostki użytkowników należą do następujących kategorii zawartości:
W pełni zintegrowane jednostki użytkownika (te, które nigdy nie przekraczają granicy bazy danych), na przykład sys.indexes. Każdy kod korzystający z tych funkcji lub dowolnego obiektu, który odwołuje się tylko do tych jednostek, jest również w pełni zawarty.
Niekontenowane jednostki użytkownika (te, które przekraczają granicę bazy danych), na przykład sys.server_principals lub podmiot zabezpieczeń serwera (identyfikator logowania). Każdy kod, który używa tych jednostek lub dowolnych funkcji odwołujących się do tych jednostek, są niekontainowane.
Częściowo zawarta baza danych
Funkcja ograniczonej bazy danych jest obecnie dostępna tylko w stanie częściowego ograniczenia. Częściowo zawarta baza danych jest zawartą bazą danych, która umożliwia korzystanie z nieokontenowanych funkcji.
Użyj widoku sys.dm_db_uncontained_entities i sys.sql_modules (Transact-SQL), aby zwrócić informacje o niekontenowanych obiektach lub funkcjach. Określając stan zawierania elementów bazy danych, można wykryć, jakie obiekty lub funkcje muszą zostać zastąpione lub zmienione w celu podwyższenia poziomu zawierania.
Ważne
Ponieważ niektóre obiekty mają domyślne ustawienie zawierania NONE, ten widok może zwracać wyniki fałszywie dodatnie.
Zachowanie częściowo zawartych baz danych różni się w odróżnieniu od niezwiązanych baz danych w odniesieniu do sortowania. Aby uzyskać więcej informacji na temat problemów z sortowaniem, zobacz Sortowania baz danych zawartych.
Zalety korzystania z częściowo zawartych baz danych
Istnieją problemy i komplikacje związane z nieużywanymi bazami danych, które można rozwiązać przy użyciu częściowo zawartej bazy danych.
Przenoszenie bazy danych
Jednym z problemów występujących podczas przenoszenia baz danych jest to, że niektóre ważne informacje mogą być niedostępne, gdy baza danych zostanie przeniesiona z jednego wystąpienia do drugiego. Na przykład informacje logowania są przechowywane w wystąpieniu zamiast w bazie danych. W przypadku przenoszenia nieuwzwiązanej bazy danych z jednego wystąpienia do innego wystąpienia programu SQL Server te informacje pozostają w tyle. Musisz zidentyfikować brakujące informacje i przenieść je wraz z bazą danych do nowego wystąpienia programu SQL Server. Ten proces może być trudny i czasochłonny.
Częściowo zawarta baza danych może przechowywać ważne informacje w bazie danych, dzięki czemu baza danych nadal zawiera informacje po przeniesieniu.
Uwaga / Notatka
Częściowo zawarta baza danych może dostarczyć dokumentację opisującą te funkcje, które są używane przez bazę danych, której nie można oddzielić od wystąpienia. Obejmuje to listę innych powiązanych baz danych, ustawień systemowych, których baza danych wymaga, ale nie może być zawarta itd.
Zalety użytkowników baz danych w trybie zawartości z funkcją Always On
Zmniejszając powiązania z wystąpieniem programu SQL Server, częściowo zawarte bazy danych mogą być przydatne podczas pracy w trybie failover, gdy używasz zawsze włączonych grup dostępności.
Tworzenie zawartych użytkowników umożliwia użytkownikowi bezpośrednie łączenie się z zawartą bazą danych. Jest to bardzo znacząca funkcja w scenariuszach wysokiej dostępności i odzyskiwania po awarii, takich jak w rozwiązaniu Always On. Jeśli użytkownicy są użytkownikami zawartymi, w przypadku przejścia w tryb failover, użytkownicy będą mogli połączyć się z instancją zapasową bez tworzenia kont logowania na instancji hostującej zapasowy system. Zapewnia to natychmiastową korzyść. Aby uzyskać więcej informacji, zobacz Omówienie zawsze włączonych grup dostępności (SQL Server) i wymagań wstępnych, ograniczeń i zaleceń dotyczących zawsze włączonych grup dostępności (SQL Server).
Początkowe programowanie bazy danych
Ponieważ deweloper może nie wiedzieć, gdzie zostanie wdrożona nowa baza danych, ograniczenie wdrożonego wpływu środowiska na bazę danych zmniejsza pracę i troskę dewelopera. W modelu nieuwzwiązanym deweloper musi odpowiednio rozważyć możliwy wpływ na środowisko nowej bazy danych i programu. Jednak przy użyciu częściowo izolowanych baz danych deweloperzy mogą wykrywać wpływ na poziomie wystąpienia bazy danych i kwestie na poziomie wystąpienia ważne dla dewelopera.
Administrowanie bazą danych
Utrzymywanie ustawień bazy danych w bazie danych, a nie w bazie danych master, umożliwia każdemu właścicielowi bazy danych większą kontrolę nad bazą danych, bez nadawania właścicielowi bazy danych uprawnienia administratora systemu .
Ograniczenia
Częściowo zawarte bazy danych nie zezwalają na następujące funkcje.
Replikacja, przechwytywanie zmian danych lub śledzenie zmian.
Procedury numerowane
Obiekty powiązane ze schematem, które zależą od wbudowanych funkcji ze zmianami sortowania
Zmiana powiązania wynikająca ze zmian sortowania, w tym odwołania do obiektów, kolumn, symboli lub typów.
Ostrzeżenie
Tymczasowe procedury składowane są obecnie dozwolone. Ze względu na to, że tymczasowe procedury składowane naruszają zasady, nie powinny być obsługiwane w przyszłych wersjach zawartej bazy danych.
Identyfikowanie ograniczania bazy danych
Istnieją dwa narzędzia ułatwiające zidentyfikowanie stanu przechowywania bazy danych. Sys.dm_db_uncontained_entities (Transact-SQL) to widok pokazujący wszystkie potencjalnie nieograniczone jednostki w bazie danych. Zdarzenie database_uncontained_usage występuje, gdy w czasie wykonywania identyfikowana jest jakakolwiek rzeczywista niekontenowana jednostka.
sys.dm_db_uncontained_entities
Ten widok przedstawia wszystkie jednostki w bazie danych, które mogą być nieokreślone, takie jak te, które przekraczają granicę bazy danych. Obejmuje to jednostki użytkowników, które mogą używać obiektów spoza modelu bazy danych. Jednak ponieważ nie można określić przynależności niektórych jednostek (na przykład korzystających z dynamicznego SQL) do momentu wykonania, widok może wyświetlać niektóre jednostki, które w rzeczywistości nie są zawarte. Aby uzyskać więcej informacji, zobacz sys.dm_db_uncontained_entities (Transact-SQL).
zdarzenie database_uncontained_usage
Ten element XEvent występuje za każdym razem, gdy w czasie wykonywania jest identyfikowana niekontenowana jednostka. Obejmuje to jednostki pochodzące z kodu klienta. Ten element XEvent będzie występować tylko w przypadku rzeczywistych niekontenowanych jednostek. Jednak zdarzenie występuje tylko w czasie wykonywania. W związku z tym XEvent nie zidentyfikuje żadnych nieprzypisanych jednostek użytkownika, które nie zostały uruchomione.
Zobacz też
Zmodyfikowane funkcje (zawarta baza danych)
Sortowania zawartej bazy danych
Najlepsze praktyki dotyczące bezpieczeństwa w użyciu baz danych w kontenerach
Migrowanie do częściowo zawartej bazy danych
Użytkownicy zawartej bazy danych — tworzenie przenośnej bazy danych