Różnice języka T-SQL między Azure SQL Managed Instance SQL Server &

Dotyczy: Azure SQL Managed Instance

W tym artykule podsumowano i wyjaśniono różnice w składni i zachowaniu między Azure SQL Managed Instance a SQL Server.

SQL Managed Instance zapewnia wysoką zgodność z aparatem bazy danych SQL Server, a większość funkcji jest obsługiwana w SQL Managed Instance.

Łatwa migracja z SQL Server

Istnieją pewne ograniczenia paaS wprowadzone w SQL Managed Instance i pewne zmiany zachowania w porównaniu z SQL Server. Różnice są podzielone na następujące kategorie:

Większość z tych funkcji to ograniczenia architektury i reprezentują funkcje usług.

Tymczasowe znane problemy wykryte w SQL Managed Instance i zostaną rozwiązane w przyszłości są opisane w artykule Co nowego?.

Dostępność

Zawsze włączone grupy dostępności

Wysoka dostępność jest wbudowana w SQL Managed Instance i nie może być kontrolowana przez użytkowników. Następujące instrukcje nie są obsługiwane:

Backup

Azure SQL Managed Instance ma automatyczne kopie zapasowe, dzięki czemu użytkownicy mogą tworzyć pełne kopie zapasowe bazy danychCOPY_ONLY. Różnicowe, dzienniki i kopie zapasowe migawek plików nie są obsługiwane.

  • Za pomocą SQL Managed Instance można utworzyć kopię zapasową bazy danych wystąpień tylko na koncie usługi Azure Blob Storage:
    • Obsługiwany jest tylko warunek BACKUP TO URL.
    • FILEUrządzenia do TAPEtworzenia kopii zapasowych , i kopii zapasowych nie są obsługiwane.
  • Większość opcji ogólnych WITH jest obsługiwana.
    • COPY_ONLY jest obowiązkowe.
    • FILE_SNAPSHOT i CREDENTIAL nie są obsługiwane.
    • Opcje taśm: REWIND, NOREWIND, UNLOADi NOUNLOAD nie są obsługiwane.
    • Opcje specyficzne dla dziennika: NORECOVERY, STANDBYi NO_TRUNCATE nie są obsługiwane.

Ograniczenia:

  • Za pomocą SQL Managed Instance można utworzyć kopię zapasową bazy danych wystąpień do kopii zapasowej z maksymalnie 32 paskami, co jest wystarczające dla baz danych do 4 TB, jeśli jest używana kompresja kopii zapasowej.

  • Nie można wykonać w BACKUP DATABASE ... WITH COPY_ONLY bazie danych zaszyfrowanej za pomocą funkcji Transparent Data Encryption (TDE) zarządzanej przez usługę. Funkcja TDE zarządzana przez usługę wymusza szyfrowanie kopii zapasowych za pomocą wewnętrznego klucza TDE. Nie można wyeksportować tego klucza, dlatego nie możesz przywrócić kopii zapasowej. Użyj automatycznych kopii zapasowych i przywracania do punktu w czasie lub zamiast tego użyj funkcji TDE zarządzanej przez klienta (BYOK). Możesz również wyłączyć szyfrowanie w bazie danych.

  • Natywne kopie zapasowe wykonane na SQL Managed Instance można przywrócić tylko do wystąpienia SQL Server 2022. Wynika to z tego, że SQL Managed Instance ma wyższą wewnętrzną wersję bazy danych w porównaniu z innymi wersjami SQL Server. Aby uzyskać więcej informacji, zobacz Przywracanie kopii zapasowej bazy danych SQL Managed Instance do SQL Server 2022.

  • Aby utworzyć kopię zapasową lub przywrócić bazę danych do/z usługi Azure Storage, możesz uwierzytelnić się przy użyciu tożsamości zarządzanej lub sygnatury dostępu współdzielonego (SAS), która jest identyfikatorem URI, który udziela ograniczonych praw dostępu do zasobów usługi Azure Storage Dowiedz się więcej na ten temat. Używanie kluczy dostępu w tych scenariuszach nie jest obsługiwane.

  • Maksymalny rozmiar paska kopii zapasowej przy użyciu BACKUP polecenia w SQL Managed Instance wynosi 195 GB, czyli maksymalny rozmiar obiektu blob. Zwiększ liczbę pasków w poleceniu tworzenia kopii zapasowej, aby zmniejszyć rozmiar poszczególnych pasków i pozostać w tym limicie.

    Porada

    Aby obejść to ograniczenie, podczas tworzenia kopii zapasowej bazy danych z SQL Server w środowisku lokalnym lub na maszynie wirtualnej można wykonywać następujące czynności:

    • Tworzenie kopii zapasowej do DISK pliku zamiast tworzenia kopii zapasowej do URLpliku .
    • Przekaż pliki kopii zapasowej do usługi Blob Storage.
    • Przywróć do SQL Managed Instance.

    Polecenie Restore w SQL Managed Instance obsługuje większe rozmiary obiektów blob w plikach kopii zapasowej, ponieważ do przechowywania przekazanych plików kopii zapasowej jest używany inny typ obiektu blob.

Aby uzyskać informacje na temat kopii zapasowych przy użyciu języka T-SQL, zobacz BACKUP.

Zabezpieczenia

Inspekcja

Najważniejsze różnice między inspekcją w usłudze Microsoft Azure SQL i SQL Server to:

  • W przypadku SQL Managed Instance inspekcja działa na poziomie serwera. Pliki .xel dziennika są przechowywane w usłudze Azure Blob Storage.
  • W przypadku usługi Azure SQL Database inspekcja działa na poziomie bazy danych. Pliki .xel dziennika są przechowywane w usłudze Azure Blob Storage.
  • W przypadku SQL Server, lokalnie lub na maszynach wirtualnych inspekcja działa na poziomie serwera. Zdarzenia są przechowywane w dziennikach zdarzeń systemu plików lub systemu Windows.

Inspekcja XEvent w usłudze SQL Managed Instance obsługuje obiekty docelowe usługi Azure Blob Storage. Dzienniki plików i systemu Windows nie są obsługiwane.

Kluczowe różnice w CREATE AUDIT składni inspekcji w usłudze Azure Blob Storage są następujące:

  • Udostępniono nową składnię TO URL umożliwiającą określenie adresu URL kontenera usługi Azure Blob Storage, w .xel którym są umieszczane pliki.
  • Składnia TO FILE nie jest obsługiwana, ponieważ SQL Managed Instance nie może uzyskać dostępu do udziałów plików systemu Windows.

Aby uzyskać więcej informacji, zobacz:

Certyfikaty

SQL Managed Instance nie można uzyskać dostępu do udziałów plików i folderów systemu Windows, więc obowiązują następujące ograniczenia:

  • Plik CREATE FROM/BACKUP TO nie jest obsługiwany w przypadku certyfikatów.
  • Certyfikat CREATE/BACKUP z FILE/ASSEMBLY programu nie jest obsługiwany. Nie można używać plików kluczy prywatnych.

Zobacz CREATE CERTIFICATE and BACKUP CERTIFICATE (TWORZENIE CERTYFIKATU I CERTYFIKAT KOPII ZAPASOWEJ).

Obejście: Zamiast tworzyć kopię zapasową certyfikatu i przywracać kopię zapasową, pobierz zawartość binarną certyfikatu i klucz prywatny, zapisz go jako plik SQL i utwórz na podstawie pliku binarnego:

SQL
CREATE CERTIFICATE  
   FROM BINARY = asn_encoded_certificate
WITH PRIVATE KEY (<private_key_options>)

Referencje

Obsługiwana jest tożsamość zarządzana, Key Vault i SHARED ACCESS SIGNATURE tożsamości platformy Azure. Użytkownicy systemu Windows nie są obsługiwani.

Zobacz CREATE CREDENTIAL (TWORZENIE POŚWIADCZEŃ ) i ALTER CREDENTIAL (TWORZENIE POŚWIADCZEŃ) i ALTER CREDENTIAL (ALTER CREDENTIAL).

Dostawcy usług kryptograficznych

SQL Managed Instance nie można uzyskać dostępu do plików, dlatego nie można utworzyć dostawców kryptograficznych:

Nazwy logowania i użytkownicy

  • Identyfikatory logowania SQL utworzone przy użyciu poleceń FROM CERTIFICATE, FROM ASYMMETRIC KEYi FROM SID są obsługiwane. Zobacz CREATE LOGIN (TWORZENIE IDENTYFIKATORA LOGOWANIA).

  • Obsługiwane są jednostki serwera usługi Azure Active Directory (Azure AD) utworzone przy użyciu składni CREATE LOGIN lub składni CREATE USER FROM LOGIN [Azure AD Login]. Te identyfikatory logowania są tworzone na poziomie serwera.

    SQL Managed Instance obsługuje jednostki bazy danych Azure AD ze składnią CREATE USER [AADUser/AAD group] FROM EXTERNAL PROVIDER. Ta funkcja jest również znana jako Azure AD użytkowników zawartej bazy danych.

  • Identyfikatory logowania systemu Windows utworzone przy użyciu CREATE LOGIN ... FROM WINDOWS składni nie są obsługiwane. Użyj identyfikatorów logowania i użytkowników usługi Azure Active Directory.

  • Administrator Azure AD dla wystąpienia ma nieograniczone uprawnienia administratora.

  • Użytkownicy niebędący administratorami Azure AD użytkowników na poziomie bazy danych można utworzyć przy użyciu CREATE USER ... FROM EXTERNAL PROVIDER składni . Zobacz CREATE USER ... OD DOSTAWCY ZEWNĘTRZNEGO.

  • Niektóre funkcje nie obsługują użycia Azure AD jednostek serwera (identyfikatorów logowania) w interakcji między wystąpieniami, ale tylko w ramach jednej SQL Managed Instance. Przykładem takiej funkcji jest replikacja SQL. Funkcja serwera połączonego obsługuje uwierzytelnianie między wystąpieniami przy użyciu jednostek serwera Azure AD (identyfikatorów logowania).

  • Ustawienie nazwy logowania Azure AD mapowanej na grupę Azure AD, ponieważ właściciel bazy danych nie jest obsługiwany. Członkiem grupy Azure AD może być właściciel bazy danych, nawet jeśli nazwa logowania nie została utworzona w bazie danych.

  • Personifikacja podmiotów zabezpieczeń na poziomie serwera Azure AD przy użyciu innych podmiotów zabezpieczeń Azure AD jest obsługiwana, na przykład klauzula EXECUTE AS. Ograniczenia funkcji EXECUTE AS są następujące:

    • Funkcja EXECUTE AS USER nie jest obsługiwana w przypadku Azure AD użytkowników, gdy nazwa różni się od nazwy logowania. Przykładem jest próba utworzenia użytkownika za pomocą składni CREATE USER [myAadUser] FROM LOGIN [john@contoso.com] i próby personifikacji za pomocą polecenia EXEC AS USER = myAadUser. Podczas tworzenia użytkownika na podstawie jednostki serwera Azure AD (identyfikatora logowania) określ user_name co ten sam login_name z identyfikatora LOGIN.

    • Tylko podmioty zabezpieczeń na poziomie SQL Server (identyfikatory logowania), które są częścią sysadmin roli, mogą wykonywać następujące operacje przeznaczone dla podmiotów zabezpieczeń Azure AD:

      • EXECUTE AS USER
      • EXECUTE AS LOGIN
    • Aby personifikować użytkownika za pomocą instrukcji EXECUTE AS, użytkownik musi zostać zamapowany bezpośrednio na Azure AD podmiot zabezpieczeń serwera (identyfikator logowania). Użytkownicy, którzy są członkami grup Azure AD mapowanych na podmioty zabezpieczeń serwera Azure AD, nie mogą być skutecznie personifikowani za pomocą instrukcji EXECUTE AS, mimo że obiekt wywołujący ma uprawnienia personifikacji w określonej nazwie użytkownika.

  • Eksportowanie/importowanie bazy danych przy użyciu plików bacpac jest obsługiwane w przypadku użytkowników Azure AD w SQL Managed Instance przy użyciu programu SSMS w wersji 18.4 lub nowszej albo pakietu SqlPackage.

    • Następujące konfiguracje są obsługiwane przy użyciu pliku bacpac bazy danych:
      • Eksportowanie/importowanie bazy danych między różnymi wystąpieniami zarządzania w ramach tej samej domeny Azure AD.
      • Wyeksportuj bazę danych z SQL Managed Instance i zaimportuj do SQL Database w tej samej domenie Azure AD.
      • Wyeksportuj bazę danych z SQL Database i zaimportuj do SQL Managed Instance w tej samej domenie Azure AD.
      • Eksportowanie bazy danych z SQL Managed Instance i importowanie do SQL Server (wersja 2012 lub nowsza).
        • W tej konfiguracji wszyscy użytkownicy Azure AD są utworzeni jako SQL Server podmioty zabezpieczeń bazy danych (użytkownicy) bez logowań. Typ użytkowników to SQL i jest widoczny w programie SQL_USERsys.database_principals. Ich uprawnienia i role pozostają w metadanych bazy danych SQL Server i mogą być używane do personifikacji. Nie można ich jednak używać do uzyskiwania dostępu do SQL Server i logowania się przy użyciu poświadczeń.
  • Tylko identyfikator logowania podmiotu zabezpieczeń na poziomie serwera, który jest tworzony przez proces aprowizacji SQL Managed Instance, członków ról serwera, takich jak securityadmin lub sysadmin, lub innych identyfikatorów logowania z uprawnieniem ALTER ANY LOGIN na poziomie serwera, może utworzyć Azure AD podmioty zabezpieczeń serwera (identyfikatory logowania) w master bazie danych dla SQL Managed Instance.

  • Jeśli identyfikator logowania jest podmiotem zabezpieczeń SQL, tylko identyfikatory logowania, które są częścią sysadmin roli, mogą użyć polecenia create, aby utworzyć identyfikatory logowania dla konta Azure AD.

  • Identyfikator logowania Azure AD musi być członkiem Azure AD w tym samym katalogu używanym do Azure SQL Managed Instance.

  • Azure AD podmioty zabezpieczeń serwera (identyfikatory logowania) są widoczne w Eksplorator obiektów począwszy od wersji SQL Server Management Studio 18.0 (wersja zapoznawcza 5).

  • Jednostka serwera z poziomem dostępu administratora systemu jest tworzona automatycznie dla konta administratora Azure AD po włączeniu go w wystąpieniu.

  • Podczas uwierzytelniania stosowana jest następująca sekwencja w celu rozpoznania podmiotu zabezpieczeń uwierzytelniania:

    1. Jeśli konto Azure AD istnieje jako bezpośrednio mapowane na jednostkę serwera Azure AD (identyfikator logowania), który jest obecny jako sys.server_principals typ "E", przyznaj dostęp i zastosuj uprawnienia podmiotu zabezpieczeń serwera Azure AD (identyfikator logowania).
    2. Jeśli konto Azure AD jest członkiem grupy Azure AD, która jest mapowana na jednostkę serwera Azure AD (identyfikator logowania), która jest obecna jako sys.server_principals typ "X", przyznaj dostęp i zastosuj uprawnienia logowania grupy Azure AD.
    3. Jeśli konto Azure AD istnieje jako bezpośrednio mapowane na użytkownika Azure AD w bazie danych, który jest obecny jako sys.database_principals typ "E", udziel dostępu i zastosuj uprawnienia użytkownika bazy danych Azure AD.
    4. Jeśli konto Azure AD jest członkiem grupy Azure AD mapowanej na użytkownika Azure AD w bazie danych, który jest obecny jako sys.database_principals typ "X", przyznaj dostęp i zastosuj uprawnienia użytkownika grupy Azure AD.

Klucz usługi i klucz główny usługi

Konfigurowanie

Rozszerzenie puli buforów

Sortowanie

Domyślnym sortowaniem wystąpienia jest SQL_Latin1_General_CP1_CI_AS i można go określić jako parametr tworzenia. Zobacz Sortowania.

Poziomy zgodności

  • Obsługiwane poziomy zgodności to 100, 110, 120, 130, 140, 150 i 160.
  • Poziomy zgodności poniżej 100 nie są obsługiwane.
  • Domyślny poziom zgodności dla nowych baz danych to 150. W przypadku przywróconych baz danych poziom zgodności pozostaje niezmieniony, jeśli był 100 lub nowszy.

Zobacz ALTER DATABASE Compatibility Level (Poziom zgodności alter DATABASE).

Dublowanie bazy danych

Dublowanie bazy danych nie jest obsługiwane.

  • ALTER DATABASE SET PARTNER opcje i SET WITNESS nie są obsługiwane.
  • CREATE ENDPOINT … FOR DATABASE_MIRRORING nie jest obsługiwany.

Aby uzyskać więcej informacji, zobacz ALTER DATABASE SET PARTNER i SET WITNESS i CREATE ENDPOINT ... DLA DATABASE_MIRRORING.

Opcje bazy danych

  • Wiele plików dziennika nie jest obsługiwanych.
  • Obiekty w pamięci nie są obsługiwane w warstwie usługi Ogólnego przeznaczenia.
  • Istnieje limit 280 plików na wystąpienie Ogólnego przeznaczenia, co oznacza maksymalnie 280 plików na bazę danych. Zarówno dane, jak i pliki dziennika w warstwie Ogólnego przeznaczenia są wliczane do tego limitu. Warstwa Krytyczne dla działania firmy obsługuje 32 767 plików na bazę danych.
  • Baza danych nie może zawierać grup plików zawierających dane strumienia plików. Przywracanie kończy się niepowodzeniem, jeśli plik bak zawiera FILESTREAM dane.
  • Każdy plik jest umieszczany w usłudze Azure Blob Storage. We/wy i przepływność na plik zależą od rozmiaru każdego pojedynczego pliku.

INSTRUKCJA CREATE DATABASE

Obowiązują następujące ograniczenia:CREATE DATABASE

  • Nie można zdefiniować plików i grup plików.

  • Grupa plików i plik zoptymalizowany pod kątem pamięci są automatycznie dodawane i nazywane XTP.

  • Opcja nie jest obsługiwana CONTAINMENT .

  • WITH opcje nie są obsługiwane.

    Porada

    Aby obejść ten problem, użyj polecenia ALTER DATABASE po CREATE DATABASE ustawieniu opcji bazy danych, aby dodać pliki lub ustawić zawieranie.

  • Opcja nie jest obsługiwana FOR ATTACH .

  • Opcja nie jest obsługiwana AS SNAPSHOT OF .

Aby uzyskać więcej informacji, zobacz CREATE DATABASE (TWORZENIE BAZY DANYCH).

INSTRUKCJA ALTER DATABASE

Niektórych właściwości pliku nie można ustawić ani zmienić:

  • Nie można określić ścieżki pliku w instrukcji ALTER DATABASE ADD FILE (FILENAME='path') języka T-SQL. Usuń FILENAME ze skryptu, ponieważ SQL Managed Instance automatycznie umieszcza pliki.
  • Nie można zmienić nazwy pliku przy użyciu instrukcji ALTER DATABASE .
  • Modyfikowanie pliku lub grupy plików XTP jest niedozwolone.

Następujące opcje są domyślnie ustawione i nie można ich zmienić:

  • MULTI_USER
  • ENABLE_BROKER
  • AUTO_CLOSE OFF

Nie można zmodyfikować następujących opcji:

  • AUTO_CLOSE
  • AUTOMATIC_TUNING(CREATE_INDEX=ON|OFF)
  • AUTOMATIC_TUNING(DROP_INDEX=ON|OFF)
  • DISABLE_BROKER
  • EMERGENCY
  • ENABLE_BROKER
  • FILESTREAM
  • HADR
  • NEW_BROKER
  • OFFLINE
  • PAGE_VERIFY
  • PARTNER
  • READ_ONLY
  • RECOVERY BULK_LOGGED
  • RECOVERY_SIMPLE
  • REMOTE_DATA_ARCHIVE
  • RESTRICTED_USER
  • SINGLE_USER
  • WITNESS

Niektóre ALTER DATABASE instrukcje (na przykład SET CONTAINMENT) mogą nie powieść się przejściowo, na przykład podczas automatycznego tworzenia kopii zapasowej bazy danych lub bezpośrednio po utworzeniu bazy danych. W takim przypadku ALTER DATABASE należy ponowić próbę instrukcji . Aby uzyskać więcej informacji na temat powiązanych komunikatów o błędach, zobacz sekcję Uwagi.

Aby uzyskać więcej informacji, zobacz ALTER DATABASE.

SQL Server Agent

  • Włączanie i wyłączanie agenta SQL Server nie jest obecnie obsługiwane w SQL Managed Instance. Agent SQL zawsze działa.
  • Wyzwalacz harmonogramu zadań na podstawie bezczynnego procesora CPU nie jest obsługiwany.
  • SQL Server Ustawienia agenta są tylko do odczytu. Procedura sp_set_agent_properties nie jest obsługiwana w SQL Managed Instance.
  • Stanowiska
    • Kroki zadania języka T-SQL są obsługiwane.
    • Obsługiwane są następujące zadania replikacji:
      • Czytnik dzienników transakcji
      • Snapshot
      • Dystrybutor
    • Obsługiwane są kroki zadania usług SSIS.
    • Inne typy kroków zadania nie są obecnie obsługiwane:
      • Krok zadania replikacji scalania nie jest obsługiwany.
      • Czytnik kolejek nie jest obsługiwany.
      • Powłoka poleceń nie jest jeszcze obsługiwana.
    • SQL Managed Instance nie może uzyskać dostępu do zasobów zewnętrznych, na przykład udziałów sieciowych za pośrednictwem narzędzia robocopy.
    • SQL Server Analysis Services nie jest obsługiwana.
  • Powiadomienia są częściowo obsługiwane.
  • Email powiadomienia są obsługiwane, chociaż wymaga skonfigurowania profilu Poczta bazy danych. SQL Server Agent może używać tylko jednego profilu Poczta bazy danych i musi być wywoływany AzureManagedInstance_dbmail_profile.
    • Pager nie jest obsługiwany.
    • Usługa NetSend nie jest obsługiwana.
    • Alerty nie są jeszcze obsługiwane.
    • Serwery proxy nie są obsługiwane.
  • Dziennik zdarzeń nie jest obsługiwany.
  • Użytkownik musi być bezpośrednio mapowany na Azure AD podmiot zabezpieczeń serwera (identyfikator logowania), aby tworzyć, modyfikować lub wykonywać zadania agenta SQL. Użytkownicy, którzy nie są bezpośrednio mapowane, na przykład użytkownicy należący do grupy Azure AD, która ma prawa do tworzenia, modyfikowania lub wykonywania zadań agenta SQL, nie będą mogli skutecznie wykonywać tych akcji. Jest to spowodowane ograniczeniami SQL Managed Instance personifikacji i WYKONYWANIA JAKO.
  • Funkcja administracji wieloserwerowej dla zadań master/target (MSX/TSX) nie jest obsługiwana.

Aby uzyskać informacje na temat agenta programu SQL Server, zobacz SQL Server Agent (Agent programu SQL Server).

tabelami

Następujące typy tabeli nie są obsługiwane:

Aby uzyskać informacje na temat tworzenia i zmieniania tabel, zobacz CREATE TABLE i ALTER TABLE.

Funkcje

Wstawianie zbiorcze /OPENROWSET

SQL Managed Instance nie można uzyskać dostępu do udziałów plików i folderów systemu Windows, dlatego pliki muszą być importowane z usługi Azure Blob Storage:

  • DATASOURCE jest wymagane w poleceniu podczas importowania BULK INSERT plików z usługi Azure Blob Storage. Zobacz WSTAWIANIE ZBIORCZE.
  • DATASOURCE jest wymagany w OPENROWSET funkcji podczas odczytywania zawartości pliku z usługi Azure Blob Storage. Zobacz OPENROWSET.
  • OPENROWSETmoże służyć do odczytywania danych z Azure SQL Database, Azure SQL Managed Instance lub SQL Server wystąpień. Inne źródła, takie jak bazy danych Oracle lub pliki programu Excel, nie są obsługiwane.

CLR

SQL Managed Instance nie może uzyskać dostępu do udziałów plików i folderów systemu Windows, więc obowiązują następujące ograniczenia:

Poczta bazy danych (db_mail)

  • sp_send_dbmail nie można wysyłać załączników przy użyciu @file_attachments parametru. Lokalny system plików i udziały zewnętrzne lub Azure Blob Storage nie są dostępne w tej procedurze.
  • Zobacz znane problemy związane z @query parametrami i uwierzytelnianiem.

DBCC

Nieudokumentowane instrukcje DBCC włączone w SQL Server nie są obsługiwane w SQL Managed Instance.

  • Obsługiwana jest tylko ograniczona liczba flag śledzenia globalnego. Poziom Trace flags sesji nie jest obsługiwany. Zobacz Flagi śledzenia.
  • DbCC TRACEOFF i DBCC TRACEON współpracują z ograniczoną liczbą globalnych flag śledzenia.
  • DbCC CHECKDB z opcjami REPAIR_ALLOW_DATA_LOSS, REPAIR_FAST i REPAIR_REBUILD nie można używać, ponieważ nie można ustawić bazy danych w SINGLE_USER trybie — zobacz ALTER DATABASE differences (Różnice w bazie danych ALTER DATABASE). Potencjalne uszkodzenie bazy danych jest obsługiwane przez zespół pomoc techniczna platformy Azure. Skontaktuj się z pomoc techniczna platformy Azure, jeśli istnieje jakiekolwiek wskazanie uszkodzenia bazy danych.

Transakcje rozproszone

Transakcje rozproszone oparte na języku T-SQL i .NET w wystąpieniach zarządzanych są ogólnie dostępne. Inne scenariusze, takie jak transakcje XA, transakcje rozproszone między wystąpieniami zarządzanymi i innymi uczestnikami i innymi uczestnikami, są obsługiwane z usługą DTC dla Azure SQL Managed Instance, która jest dostępna w publicznej wersji zapoznawczej.

Zdarzenia rozszerzone

Niektóre elementy docelowe właściwe dla systemu Windows dotyczące zdarzeń rozszerzonych (XEvents) nie są obsługiwane:

Biblioteki zewnętrzne

Biblioteki zewnętrzne języka R i Python w bazie danych są obsługiwane w ograniczonej publicznej wersji zapoznawczej. Zobacz Usługi Machine Learning Services w Azure SQL Managed Instance (wersja zapoznawcza).

Plikstream i FileTable

  • Dane strumienia plików nie są obsługiwane.
  • Baza danych nie może zawierać grup plików z FILESTREAM danymi.
  • FILETABLE nie jest obsługiwane.
  • Tabele nie mogą mieć FILESTREAM typów.
  • Następujące funkcje nie są obsługiwane:
    • GetPathLocator()
    • GET_FILESTREAM_TRANSACTION_CONTEXT()
    • PathName()
    • GetFileNamespacePat)
    • FileTableRootPath()

Aby uzyskać więcej informacji, zobacz FILESTREAM i FileTables.

Wyszukiwanie semantyczne nie jest obsługiwane.

Serwery połączone

Połączone serwery w SQL Managed Instance obsługują ograniczoną liczbę obiektów docelowych:

  • Obsługiwane obiekty docelowe to SQL Managed Instance, SQL Database, Azure Synapse bezserwerowe i dedykowane pule SQL oraz wystąpienia SQL Server.
  • Obiekty docelowe, które nie są obsługiwane, to pliki, usługi Analysis Services i inne systemy RDBMS. Spróbuj użyć natywnego importu csv z Azure Blob Storage przy użyciu BULK INSERT lub jako alternatywy dla importowania plików lub załaduj pliki przy użyciu bezserwerowej puli SQL w usłudze Azure Synapse AnalyticsOPENROWSET.

Operacje:

Połączone serwery na Azure SQL Managed Instance obsługują uwierzytelnianie SQL i uwierzytelnianie Azure AD.

PolyBase

Wirtualizacja danych z Azure SQL Managed Instance umożliwia wykonywanie zapytań języka Transact-SQL (T-SQL) względem danych z plików przechowywanych w Azure Data Lake Storage Gen2 lub Azure Blob Storage i łączenia ich z lokalnie przechowywanymi danymi relacyjnymi przy użyciu sprzężeń. Formaty plików parquet i rozdzielane tekstem (CSV) są obsługiwane bezpośrednio. Format pliku JSON jest pośrednio obsługiwany przez określenie formatu pliku CSV, w którym zapytania zwracają każdy dokument jako oddzielny wiersz. Możliwe jest dalsze analizowanie wierszy przy użyciu poleceń JSON_VALUE i OPENJSON. Aby uzyskać ogólne informacje o technologii PolyBase, zobacz PolyBase.

Ponadto opcja CREATE EXTERNAL TABLE AS SELECT (CETAS) umożliwia eksportowanie danych z wystąpienia zarządzanego SQL do zewnętrznego konta magazynu. Za pomocą instrukcji CETAS można utworzyć tabelę zewnętrzną na podstawie plików Parquet lub CSV usługi Azure Blob Storage lub Azure Data Lake Storage (ADLS) Gen2. Funkcja CETAS może również równolegle eksportować wyniki instrukcji T-SQL SELECT do utworzonej tabeli zewnętrznej.

Replikacja

  • Obsługiwane są typy replikacji migawki i dwukierunkowe. Replikacja scalania, replikacja równorzędna i subskrypcje z możliwością aktualizacji nie są obsługiwane.
  • Replikacja transakcyjna jest dostępna dla SQL Managed Instance z pewnymi ograniczeniami:
    • Wszystkie typy uczestników replikacji (wydawca, dystrybutor, subskrybent ściągania i subskrybent wypychania) można umieścić na SQL Managed Instance, ale wydawca i dystrybutor muszą znajdować się zarówno w chmurze, jak i w obu środowiskach lokalnych.
    • SQL Managed Instance może komunikować się z najnowszymi wersjami SQL Server. Aby uzyskać więcej informacji, zobacz macierz obsługiwanych wersji.
    • Replikacja transakcyjna ma pewne dodatkowe wymagania dotyczące sieci.

Aby uzyskać więcej informacji na temat konfigurowania replikacji transakcyjnej, zobacz następujące samouczki:

INSTRUKCJA RESTORE

  • Obsługiwana składnia:
    • RESTORE DATABASE
    • RESTORE FILELISTONLY
    • RESTORE HEADERONLY
    • RESTORE LABELONLY
    • RESTORE VERIFYONLY
  • Nieobsługiwana składnia:
    • RESTORE LOGONLY
    • RESTORE REWINDONLY
  • Źródło:
    • FROM URL (Azure Blob Storage) jest jedyną obsługiwaną opcją.
    • FROM DISK/TAPE/backup device nie jest obsługiwane.
    • Zestawy kopii zapasowych nie są obsługiwane.
  • WITH opcje nie są obsługiwane. Próby przywracania, w tym WITH takie jak DIFFERENTIAL, , STATSREPLACEi tak dalej, zakończy się niepowodzeniem.

Operacja przywracania bazy danych jest asynchroniczna i można ponowić próbę w Azure SQL Managed Instance. Jeśli połączenie zakończy się niepowodzeniem lub upłynął limit czasu, może wystąpić błąd w programie SSMS. Azure SQL Managed Instance nadal próbuje przywrócić bazę danych w tle i można śledzić postęp procesu przywracania przy użyciu sys.dm_exec_requests i sys.dm_operation_status dynamicznych widoków zarządzania.

Następujące opcje bazy danych są ustawiane lub zastępowane i nie można ich później zmienić:

  • NEW_BROKER jeśli broker nie jest włączony w pliku bak.
  • ENABLE_BROKER jeśli broker nie jest włączony w pliku bak.
  • AUTO_CLOSE=OFF jeśli baza danych w pliku bak ma AUTO_CLOSE=ONwartość .
  • RECOVERY FULL jeśli baza danych w pliku bak ma SIMPLE lub BULK_LOGGED tryb odzyskiwania.
  • Dodawana jest grupa plików zoptymalizowana pod kątem pamięci o nazwie XTP, jeśli nie znajduje się w źródłowym pliku bak.
  • Każda istniejąca grupa plików zoptymalizowana pod kątem pamięci została zmieniona na XTP.
  • SINGLE_USER opcje i RESTRICTED_USER są konwertowane na MULTI_USER.

Ograniczenia:

  • Kopie zapasowe uszkodzonych baz danych mogą zostać przywrócone w zależności od typu uszkodzenia, ale automatyczne kopie zapasowe nie zostaną wykonane, dopóki uszkodzenie nie zostanie naprawione. Upewnij się, że uruchomiono DBCC CHECKDB źródłową SQL Managed Instance i użyj kopii zapasowejWITH CHECKSUM, aby zapobiec temu problemowi.
  • .BAK Nie można przywrócić pliku bazy danych zawierającej jakiekolwiek ograniczenia opisane w tym dokumencie (na przykład FILESTREAM lub FILETABLE obiektów) w SQL Managed Instance.
  • .BAK nie można przywrócić plików zawierających wiele zestawów kopii zapasowych.
  • .BAK nie można przywrócić plików zawierających wiele plików dziennika.
  • Kopie zapasowe zawierające bazy danych większe niż 8 TB, aktywne obiekty OLTP w pamięci lub liczbę plików, które przekroczyłyby 280 plików na wystąpienie, nie można przywrócić w wystąpieniu Ogólnego przeznaczenia.
  • Kopie zapasowe zawierające bazy danych większe niż 4 TB lub obiekty OLTP w pamięci o całkowitym rozmiarze większym niż rozmiar opisany w limitach zasobów nie można przywrócić w wystąpieniu Krytyczne dla działania firmy. Aby uzyskać informacje na temat instrukcji przywracania, zobacz instrukcje RESTORE.

Ważne

Te same ograniczenia dotyczą wbudowanej operacji przywracania do punktu w czasie. Na przykład nie można przywrócić bazy danych Ogólnego przeznaczenia większej niż 4 TB w wystąpieniu Krytyczne dla działania firmy. Krytyczne dla działania firmy bazy danych z plikami OLTP w pamięci lub więcej niż 280 plików nie można przywrócić w wystąpieniu Ogólnego przeznaczenia.

Broker usług

Wymiana komunikatów brokera usług między wystąpieniami jest obsługiwana tylko między wystąpieniami zarządzanymi Azure SQL:

  • CREATE ROUTE: Nie można używać CREATE ROUTE z ADDRESS inną nazwą LOCAL niż dns innej SQL Managed Instance. Port jest zawsze 4022.
  • ALTER ROUTE: Nie można używać ALTER ROUTE z ADDRESS inną nazwą LOCAL niż dns innej SQL Managed Instance. Port jest zawsze 4022.

Zabezpieczenia transportu są obsługiwane, zabezpieczenia okna dialogowego nie są:

  • CREATE REMOTE SERVICE BINDINGnie są obsługiwane.

Broker usługi jest domyślnie włączony i nie można go wyłączyć. Następujące opcje ALTER DATABASE nie są obsługiwane:

  • ENABLE_BROKER
  • DISABLE_BROKER

Procedury składowane, funkcje i wyzwalacze

  • NATIVE_COMPILATIONnie jest obsługiwana w warstwie Ogólnego przeznaczenia.
  • Następujące opcje sp_configure nie są obsługiwane:
    • allow polybase export
    • allow updates
    • filestream_access_level
    • remote access
    • remote data archive
    • remote proc trans
    • scan for startup procs
  • Następujące opcje sp_configure są ignorowane i nie mają wpływu:
    • Ole Automation Procedures
  • sp_execute_external_scriptsprogram jest obsługiwany tylko w przypadku usług Machine Learning Services for SQL MI. W przeciwnym razie sp_execute_external_scripts nie jest obsługiwana w przypadku SQL Managed Instance. Zobacz sp_execute_external_scripts.
  • xp_cmdshell nie jest obsługiwane. Zobacz xp_cmdshell.
  • Extended stored procedures nie są obsługiwane, a dotyczy to sp_addextendedproc również parametrów i sp_dropextendedproc. Ta funkcja nie będzie obsługiwana, ponieważ znajduje się ona w ścieżce wycofania dla SQL Server. Aby uzyskać więcej informacji, zobacz Rozszerzone procedury składowane.
  • sp_attach_db, sp_attach_single_file_dbi sp_detach_db nie są obsługiwane. Zobacz sp_attach_db, sp_attach_single_file_db i sp_detach_db.

Funkcje i zmienne systemowe

Następujące zmienne, funkcje i widoki zwracają różne wyniki:

  • SERVERPROPERTY('EngineEdition') zwraca wartość 8. Ta właściwość jednoznacznie identyfikuje SQL Managed Instance. Zobacz SERVERPROPERTY.
  • SERVERPROPERTY('InstanceName')zwraca wartość NULL, ponieważ koncepcja wystąpienia istnieje dla SQL Server nie ma zastosowania do SQL Managed Instance. Zobacz SERVERPROPERTY('InstanceName').
  • @@SERVERNAME Zwraca pełną nazwę DNS "connectable", na przykład my-managed-instance.wcus17662feb9ce98.database.windows.net. Zobacz @@SERVERNAME.
  • SYS.SERVERS Zwraca pełną nazwę DNS "connectable", taką jak myinstance.domain.database.windows.net właściwości "name" i "data_source". Zobacz SYSTEM. SERWERY.
  • @@SERVICENAMEzwraca wartość NULL, ponieważ koncepcja usługi istnieje dla SQL Server nie ma zastosowania do SQL Managed Instance. Zobacz @@SERVICENAME.
  • SUSER_ID jest obsługiwana. Zwraca wartość NULL, jeśli identyfikator logowania Azure AD nie znajduje się w elemecie sys.syslogins. Zobacz SUSER_ID.
  • SUSER_SID nie jest obsługiwany. Zwracane są nieprawidłowe dane, co jest tymczasowym znanym problemem. Zobacz SUSER_SID.

Ograniczenia środowiska

Podsieć

  • Nie można umieścić żadnych innych zasobów (na przykład maszyn wirtualnych) w podsieci, w której wdrożono SQL Managed Instance. Wdróż te zasoby przy użyciu innej podsieci.
  • Podsieć musi mieć wystarczającą liczbę dostępnych adresów IP. Minimalna wartość to co najmniej 32 adresy IP w podsieci.
  • Liczba rdzeni wirtualnych i typów wystąpień, które można wdrożyć w regionie, ma pewne ograniczenia i limity.
  • Istnieje konfiguracja sieci , która musi być stosowana w podsieci.

Sieć wirtualna

  • Sieć wirtualną można wdrożyć przy użyciu modelu zasobów. Model klasyczny nie obsługuje wdrażania sieci wirtualnej.
  • Po utworzeniu wystąpienia zarządzanego SQL przenoszenie wystąpienia zarządzanego SQL lub sieci wirtualnej do innej grupy zasobów lub subskrypcji nie jest obsługiwane.
  • W przypadku wystąpień zarządzanych SQL hostowanych w klastrach wirtualnych utworzonych przed 22 września 2020 r. globalna komunikacja równorzędna sieci wirtualnej nie jest obsługiwana. Możesz połączyć się z tymi zasobami za pośrednictwem usługi ExpressRoute lub połączenia między sieciami wirtualnymi za pośrednictwem bram sieci wirtualnej.

Grupy trybu failover

Systemowe bazy danych nie są replikowane do wystąpienia pomocniczego w grupie trybu failover. W związku z tym scenariusze zależne od obiektów z systemowych baz danych są niemożliwe w wystąpieniu pomocniczym, chyba że obiekty są tworzone ręcznie na serwerze pomocniczym.

TEMPDB

  • Maksymalny rozmiar pliku systemowej tempdb bazy danych nie może być większy niż 24 GB na rdzeń w warstwie Ogólnego przeznaczenia. Maksymalny tempdb rozmiar warstwy Krytyczne dla działania firmy jest ograniczony przez rozmiar magazynu SQL Managed Instance. TempdbRozmiar pliku dziennika jest ograniczony do 120 GB w warstwie Ogólnego przeznaczenia. Niektóre zapytania mogą zwracać błąd, jeśli potrzebują więcej niż 24 GB na rdzeń lub tempdb jeśli generują więcej niż 120 GB danych dziennika.
  • Tempdb element jest zawsze podzielony na 12 plików danych: 1 podstawowy, nazywany również głównym, plikiem danych i 11 plikami danych innych niż podstawowe. Nie można zmienić struktury plików i nie można dodać nowych plików do programu tempdb.
  • Metadane zoptymalizowane tempdb pod kątem pamięci, nowa funkcja bazy danych w pamięci SQL Server 2019, nie jest obsługiwana.
  • Obiekty utworzone w bazie danych modelu nie mogą być automatycznie tworzone tempdb po ponownym uruchomieniu lub przejściu w tryb failover, ponieważ tempdb nie pobiera początkowej listy obiektów z bazy danych modelu. Obiekty należy utworzyć tempdb ręcznie po każdym ponownym uruchomieniu lub przejściu w tryb failover.

MSDB

Następujące schematy w systemowej msdb bazie danych w SQL Managed Instance muszą być własnością odpowiednich wstępnie zdefiniowanych ról:

Ważne

Zmiana wstępnie zdefiniowanych nazw ról, nazw schematów i właścicieli schematów przez klientów wpłynie na normalne działanie usługi. Wszelkie zmiany wprowadzone w nich zostaną przywrócone do wstępnie zdefiniowanych wartości zaraz po wykryciu lub przy następnej aktualizacji usługi najpóźniej w celu zapewnienia normalnego działania usługi.

Dzienniki błędów

SQL Managed Instance umieszcza pełne informacje w dziennikach błędów. Istnieje wiele wewnętrznych zdarzeń systemu, które są rejestrowane w dzienniku błędów. Użyj procedury niestandardowej, aby odczytać dzienniki błędów, które filtruje niektóre nieistotne wpisy. Aby uzyskać więcej informacji, zobacz SQL Managed Instance — sp_readmierrorlog lub rozszerzenie SQL Managed Instance (wersja zapoznawcza) dla programu Azure Data Studio.

Zmiana liczby zachowanych dzienników błędów jest nieobsługiwana.

Następne kroki