Znane problemy z usługą Azure SQL Managed Instance

Dotyczy: Azure SQL Managed Instance

W tym artykule wymieniono obecnie znane problemy z Azure SQL Managed Instance, a także ich datę rozwiązania lub możliwe obejście. Aby dowiedzieć się więcej na temat Azure SQL Managed Instance, zobacz omówienie i co nowego.

Znane problemy

Problem Data odnalezienia Stan Data rozwiązania
Zwiększona liczba logowań systemowych używanych na potrzeby replikacji transakcyjnej Grudzień 2022 r. Brak rozwiązania
Tabela msdb dla ręcznych kopii zapasowych nie zachowuje nazwy użytkownika Listopad 2022 r. Brak rozwiązania
Tymczasowe wytyczne dotyczące aktualizacji strefy czasowej w 2022 r. dla Chile Sierpień 2022 r. Ma obejście
Wykonywanie zapytań względem tabeli zewnętrznej kończy się niepowodzeniem z komunikatem o błędzie "nieobsługiwany" Styczeń 2022 r. Resolved Wrz 2022 r.
W przypadku korzystania z uwierzytelniania SQL Server nazwy użytkowników z atrybutem "@" nie są obsługiwane Październik 2021 r. Resolved Luty 2022 r.
Wprowadzający w błąd komunikat o błędzie w Azure Portal sugerujący odtworzenie jednostki usługi Wrz 2021 r. Październik 2021 r.
Zmiana typu połączenia nie ma wpływu na połączenia za pośrednictwem punktu końcowego grupy trybu failover Styczeń 2021 r. Ma obejście
Procedure sp_send_dbmail may transiently fail when @query parameter is used Styczeń 2021 r. Ma obejście
Transakcje rozproszone można wykonywać po usunięciu wystąpienia zarządzanego z grupy zaufania serwera Październik 2020 r. Ma obejście
Transakcje rozproszone nie mogą być wykonywane po operacji skalowania wystąpienia zarządzanego Październik 2020 r. Resolved Maj 2021 r.
Nie można utworzyć SQL Managed Instance o tej samej nazwie co wcześniej usunięty serwer logiczny Sierpień 2020 r. Ma obejście
Jednostka usługi nie może uzyskać dostępu do Azure AD i usługi AKV Sierpień 2020 r. Ma obejście
Przywracanie ręcznej kopii zapasowej bez sumy KONTROLNEj może zakończyć się niepowodzeniem Maj 2020 r. Resolved Czerwiec 2020 r.
Agent przestaje odpowiadać na modyfikowanie, wyłączanie lub włączanie istniejących zadań Maj 2020 r. Resolved Czerwiec 2020 r.
Uprawnienia do grupy zasobów nie są stosowane do SQL Managed Instance Luty 2020 r. Resolved Listopad 2020 r.
Ograniczenie ręcznego przejścia w tryb failover za pośrednictwem portalu dla grup trybu failover Styczeń 2020 r. Ma obejście
Role agenta SQL wymagają jawnych uprawnień do wykonywania w przypadku identyfikatorów logowania innych niż sysadmin Grudzień 2019 r. Ma obejście
Zadania agenta SQL mogą zostać przerwane przez ponowne uruchomienie procesu agenta Grudzień 2019 r. Resolved Mar 2020
Azure AD logowania i użytkownicy nie są obsługiwani w programie SSDT Listopad 2019 r. Brak obejścia
Limity pamięci OLTP w pamięci nie są stosowane Październik 2019 r. Ma obejście
Wystąpił nieprawidłowy błąd podczas próby usunięcia pliku, który nie jest pusty Październik 2019 r. Ma obejście
Zmiana warstwy usługi i operacje tworzenia wystąpienia są blokowane przez trwające przywracanie bazy danych Wrzesień 2019 r. Ma obejście
Zarządca zasobów w warstwie usługi Krytyczne dla działania firmy może wymagać ponownego skonfigurowania po przejściu w tryb failover Wrzesień 2019 r. Ma obejście
Okna dialogowe brokera usług między bazami danych muszą zostać ponownie zainicjowane po uaktualnieniu warstwy usługi Sierpień 2019 r. Ma obejście
Personifikacja typów logowania Azure AD nie jest obsługiwana Lipiec 2019 Brak obejścia
parametr @query nie jest obsługiwany w sp_send_db_mail Kwi 2019 Resolved Styczeń 2021 r.
Replikacja transakcyjna musi zostać ponownie skonfigurowana po przejściu w tryb failover geograficznym Mar 2019 Brak obejścia
Tymczasowa baza danych jest używana podczas operacji RESTORE Ma obejście
Struktura i zawartość bazy danych TEMPDB została ponownie utworzona Brak obejścia
Przekroczenie miejsca do magazynowania z małymi plikami bazy danych Ma obejście
Wartości identyfikatora GUID wyświetlane zamiast nazw baz danych Ma obejście
Dzienniki błędów nie są utrwalane Brak obejścia
Zakres transakcji w dwóch bazach danych w tym samym wystąpieniu nie jest obsługiwany Ma obejście Mar 2020
Moduły CLR i serwery połączone czasami nie mogą odwoływać się do lokalnego adresu IP Ma obejście
Spójność bazy danych nie została zweryfikowana przy użyciu bazy danych DBCC CHECKDB po przywróceniu bazy danych z Azure Blob Storage. Resolved Listopad 2019 r.
Przywracanie bazy danych do punktu w czasie z warstwy Krytyczne dla działania firmy do warstwy Ogólnego przeznaczenia nie powiedzie się, jeśli źródłowa baza danych zawiera obiekty OLTP w pamięci. Resolved Październik 2019 r.
Funkcja poczty bazy danych z zewnętrznymi serwerami poczty (spoza platformy Azure) przy użyciu bezpiecznego połączenia Resolved Październik 2019 r.
Zawarte bazy danych nie są obsługiwane w SQL Managed Instance Resolved Sierpień 2019 r.

Ma obejście

Tymczasowe wytyczne dotyczące aktualizacji strefy czasowej w 2022 r. dla Chile

8 sierpnia 2022 r. chilijski rząd ogłosił oficjalną zmianę strefy czasowej Daylight-Saving Time (DST). Począwszy od 12:00 w sobotę, 10 września 2022 r., do 12:00 w sobotę, 1 kwietnia 2023 r., oficjalny czas wzrośnie o 60 minut. Zmiana ma wpływ na następujące trzy strefy czasowe: Pacyfik SA (czas standardowy), Easter Island Standard Time (Czas standardowy ) i Magallanes (czas standardowy). Azure SQL wystąpienia zarządzane korzystające ze stref czasowych, których dotyczy problem, nie będą odzwierciedlać zmian, dopóki firma Microsoft nie wyda aktualizacji systemu operacyjnego w celu obsługi tej funkcji i usługa Azure SQL Managed Instance pochłonie aktualizację na poziomie systemu operacyjnego.

Obejście: Jeśli musisz zmienić strefy czasowe dla wystąpień zarządzanych, pamiętaj o ograniczeniach i postępuj zgodnie ze wskazówkami z dokumentacji.

Zmiana typu połączenia nie ma wpływu na połączenia za pośrednictwem punktu końcowego grupy trybu failover

Jeśli wystąpienie uczestniczy w grupie automatycznego trybu failover, zmiana typu połączenia wystąpienia nie będzie obowiązywać dla połączeń ustanowionych za pośrednictwem punktu końcowego odbiornika grupy trybu failover.

Obejście: Po zmianie typu połączenia upuść i ponownie utwórz grupę automatycznego trybu failover.

Procedura sp_send_dbmail może zakończyć się przejściowym niepowodzeniem w przypadku @query użycia parametru

Procedura sp_send_dbmail może zakończyć się przejściowym niepowodzeniem w przypadku @query użycia parametru. W przypadku wystąpienia tego problemu co drugie wykonanie procedury sp_send_dbmail kończy się niepowodzeniem z powodu błędu i komunikatu Msg 22050, Level 16, State 1Failed to initialize sqlcmd library with error number -2147467259. Aby można było prawidłowo zobaczyć ten błąd, należy wywołać procedurę z wartością domyślną 0 dla parametru @exclude_query_output. W przeciwnym razie błąd nie zostanie rozpropagowany.

Przyczyną tego problemu jest znana usterka związana z sp_send_dbmail używaniem personifikacji i buforowania połączeń.

Aby obejść ten problem, zawijaj kod wysyłania wiadomości e-mail do logiki ponawiania, która opiera się na parametrze @mailitem_idwyjściowym . Jeśli wykonanie zakończy się niepowodzeniem, wartość parametru będzie mieć wartość NULL, co sp_send_dbmail oznacza, że powinna zostać wywołana jeszcze raz, aby pomyślnie wysłać wiadomość e-mail. Oto przykład logiki ponawiania prób.

CREATE PROCEDURE send_dbmail_with_retry AS
BEGIN
    DECLARE @miid INT
    EXEC msdb.dbo.sp_send_dbmail
        @recipients = 'name@mail.com', @subject = 'Subject', @query = 'select * from dbo.test_table',
        @profile_name ='AzureManagedInstance_dbmail_profile', @execute_query_database = 'testdb',
        @mailitem_id = @miid OUTPUT

    -- If sp_send_dbmail returned NULL @mailidem_id then retry sending email.
    --
    IF (@miid is NULL)
    EXEC msdb.dbo.sp_send_dbmail
        @recipients = 'name@mail.com', @subject = 'Subject', @query = 'select * from dbo.test_table',
        @profile_name ='AzureManagedInstance_dbmail_profile', @execute_query_database = 'testdb',
END

Transakcje rozproszone można wykonywać po usunięciu wystąpienia zarządzanego z grupy zaufania serwera

Grupy zaufania serwera służą do ustanawiania zaufania między wystąpieniami zarządzanymi, które są wymagane do wykonywania transakcji rozproszonych. Po usunięciu wystąpienia zarządzanego z grupy zaufania serwera lub usunięciu grupy nadal może być możliwe wykonywanie transakcji rozproszonych. Istnieje obejście problemu, które można zastosować, aby upewnić się, że transakcje rozproszone są wyłączone i że ręczne przejście w tryb failover inicjowane przez użytkownika w wystąpieniu zarządzanym.

Transakcje rozproszone nie mogą być wykonywane po operacji skalowania wystąpienia zarządzanego

SQL Managed Instance operacje skalowania, które obejmują zmianę warstwy usługi lub liczby rdzeni wirtualnych, zresetują ustawienia grupy zaufania serwera na zapleczu i wyłączą uruchamianie transakcji rozproszonych. Aby obejść ten problem, usuń i utwórz nową grupę zaufania serwera w Azure Portal.

Nie można utworzyć SQL Managed Instance o tej samej nazwie co wcześniej usunięty serwer logiczny

Rekord DNS jest tworzony podczas tworzenia serwera logicznego <name>.database.windows.comna platformie Azure dla usługi Azure SQL Database oraz podczas tworzenia SQL Managed Instance. Rekord DNS musi być unikatowy. W związku z tym, jeśli utworzysz serwer logiczny dla SQL Database, a następnie usuniesz go, istnieje okres progowy 7 dni przed zwolnieniem nazwy z rekordów. W tym okresie nie można utworzyć SQL Managed Instance o tej samej nazwie co usunięty serwer logiczny. Aby obejść ten problem, użyj innej nazwy SQL Managed Instance lub utwórz bilet pomocy technicznej, aby zwolnić nazwę serwera logicznego.

Jednostka usługi nie może uzyskać dostępu do Azure AD i usługi AKV

W niektórych okolicznościach może wystąpić problem z jednostką usługi używaną do uzyskiwania dostępu do usług Azure AD i Azure Key Vault (AKV). W rezultacie ten problem ma wpływ na użycie uwierzytelniania Azure AD i technologii Transparent Database Encryption (TDE) z SQL Managed Instance. Może to wystąpić jako sporadyczne problemy z łącznością lub brak możliwości uruchamiania instrukcji, takich jak CREATE LOGIN/USER FROM EXTERNAL PROVIDER lub EXECUTE AS LOGIN/USER. Skonfigurowanie funkcji TDE przy użyciu klucza zarządzanego przez klienta na nowym Azure SQL Managed Instance może również nie działać w pewnych okolicznościach.

Obejście: Aby zapobiec występowaniu tego problemu na SQL Managed Instance przed wykonaniem jakichkolwiek poleceń aktualizacji lub w przypadku, gdy ten problem wystąpił już po zaktualizowaniu poleceń, przejdź do Azure Portal, uzyskaj dostęp do SQL Managed Instance strony administratora usługi Active Directory. Sprawdź, czy widzisz komunikat o błędzie "Wystąpienie zarządzane wymaga jednostki usługi w celu uzyskania dostępu do usługi Azure Active Directory. Kliknij tutaj, aby utworzyć jednostkę usługi". W przypadku napotkania tego komunikatu o błędzie kliknij go i postępuj zgodnie z instrukcjami krok po kroku podanymi do momentu usunięcia tego błędu.

Ograniczenie ręcznego przejścia w tryb failover za pośrednictwem portalu dla grup trybu failover

Jeśli grupa trybu failover obejmuje wiele wystąpień w różnych subskrypcjach platformy Azure lub grupach zasobów, nie można zainicjować ręcznego przejścia w tryb failover z wystąpienia podstawowego w grupie trybu failover.

Obejście: Zainicjuj tryb failover za pośrednictwem portalu z wystąpienia pomocniczego obszaru geograficznego.

Role agenta SQL wymagają jawnych uprawnień do wykonywania w przypadku identyfikatorów logowania innych niż sysadmin

Jeśli do wszystkich stałych ról bazy danych agenta SQL dodano identyfikatory logowania inne niż sysadmin, istnieje problem polegający na tym, że jawne uprawnienia EXECUTE muszą zostać przyznane trzem procedurom składowanymi w master bazie danych, aby te identyfikatory logowania działały. Jeśli ten problem zostanie napotkany, zostanie wyświetlony komunikat The EXECUTE permission was denied on the object <object_name> (Microsoft SQL Server, Error: 229) o błędzie.

Obejście: Po dodaniu identyfikatorów logowania do stałej roli bazy danych agenta SQL (SQLAgentUserRole, SQLAgentReaderRole lub SQLAgentOperatorRole) dla każdego identyfikatora logowania dodanego do tych ról wykonaj poniższy skrypt języka T-SQL, aby jawnie udzielić uprawnień EXECUTE do wymienionych procedur składowanych.

USE [master]
GO
CREATE USER [login_name] FOR LOGIN [login_name];
GO
GRANT EXECUTE ON master.dbo.xp_sqlagent_enum_jobs TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_is_starting TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_notify TO [login_name];

Limity pamięci OLTP w pamięci nie są stosowane

W niektórych przypadkach warstwa usługi Krytyczne dla działania firmy nie zastosuje limitów maksymalnej ilości pamięci dla obiektów zoptymalizowanych pod kątem pamięci. SQL Managed Instance może umożliwić obciążeniu użycie większej ilości pamięci dla operacji OLTP w pamięci, co może mieć wpływ na dostępność i stabilność wystąpienia. Zapytania OLTP w pamięci, które osiągają limity, mogą nie zakończyć się natychmiast niepowodzeniem. Ten problem zostanie wkrótce rozwiązany. Zapytania korzystające z większej ilości pamięci OLTP w pamięci nie powiedzą się wcześniej, jeśli osiągną limity.

Obejście: Monitoruj użycie magazynu OLTP w pamięci przy użyciu SQL Server Management Studio, aby upewnić się, że obciążenie nie używa więcej niż dostępnej pamięci. Zwiększ limity pamięci, które zależą od liczby rdzeni wirtualnych, lub zoptymalizuj obciążenie, aby używać mniejszej ilości pamięci.

Wystąpił nieprawidłowy błąd podczas próby usunięcia pliku, który nie jest pusty

SQL Server i SQL Managed Instance nie zezwalają użytkownikowi na usunięcie pliku, który nie jest pusty. Jeśli spróbujesz usunąć brak pliku danych przy użyciu instrukcji ALTER DATABASE REMOVE FILE , błąd Msg 5042 – The file '<file_name>' cannot be removed because it is not empty nie zostanie natychmiast zwrócony. SQL Managed Instance będzie nadal próbować usunąć plik, a operacja zakończy się niepowodzeniem po 30 minutach.Internal server error

Obejście: Usuń zawartość pliku przy użyciu DBCC SHRINKFILE (N'<file_name>', EMPTYFILE) polecenia . Jeśli jest to jedyny plik w grupie plików, musisz usunąć dane z tabeli lub partycji skojarzonej z tą grupą plików przed zmniejszeniem pliku i opcjonalnie załadować te dane do innej tabeli/partycji.

Zmiana warstwy usługi i operacje tworzenia wystąpienia są blokowane przez trwające przywracanie bazy danych

Ciągła RESTORE instrukcja, proces migracji usługi Data Migration Service i wbudowane przywracanie do punktu w czasie spowoduje zablokowanie aktualizacji warstwy usługi lub zmiany rozmiaru istniejącego wystąpienia i utworzenia nowych wystąpień do momentu zakończenia procesu przywracania.

Proces przywracania zablokuje te operacje na wystąpieniach zarządzanych i pulach wystąpień w tej samej podsieci, w której jest uruchomiony proces przywracania. Nie ma to wpływu na wystąpienia w pulach wystąpień. Tworzenie lub zmienianie operacji warstwy usługi nie zakończy się niepowodzeniem ani przekroczeniem limitu czasu. Będą one kontynuowane po zakończeniu lub anulowaniu procesu przywracania.

Obejście: Zaczekaj na zakończenie procesu przywracania lub anuluj proces przywracania, jeśli operacja tworzenia lub aktualizacji warstwy usługi ma wyższy priorytet.

Zarządca zasobów w warstwie usługi Krytyczne dla działania firmy może wymagać ponownego skonfigurowania po przejściu w tryb failover

Funkcja Zarządca zasobów , która umożliwia ograniczenie zasobów przypisanych do obciążenia użytkownika, może niepoprawnie sklasyfikować obciążenie użytkownika po przejściu w tryb failover lub zmianie warstwy usługi zainicjowanej przez użytkownika (na przykład zmiany maksymalnego rozmiaru rdzeni wirtualnych lub maksymalnego rozmiaru magazynu wystąpień).

Obejście: Uruchamiaj ALTER RESOURCE GOVERNOR RECONFIGURE okresowo lub jako część zadania agenta SQL, które wykonuje zadanie SQL, gdy wystąpienie jest uruchamiane, jeśli używasz zarządcy zasobów.

Okna dialogowe brokera usług między bazami danych muszą zostać ponownie zainicjowane po uaktualnieniu warstwy usługi

Okna dialogowe usługi Service Broker między bazami danych przestaną dostarczać komunikaty do usług w innych bazach danych po zmianie operacji warstwy usług. Komunikaty nie zostaną utracone i można je znaleźć w kolejce nadawcy. Każda zmiana rozmiaru rdzeni wirtualnych lub magazynu wystąpień w SQL Managed Instance spowoduje zmianę service_broke_guid wartości w widoku sys.databases dla wszystkich baz danych. Każda DIALOG utworzona przy użyciu instrukcji BEGIN DIALOG , która odwołuje się do brokerów usług w innej bazie danych, przestanie dostarczać komunikaty do usługi docelowej.

Obejście: Zatrzymaj wszystkie działania korzystające z konwersacji dialogowych między bazami danych usługi Service Broker przed zaktualizowaniem warstwy usługi i zainicjuj je później. Jeśli po zmianie warstwy usługi istnieją pozostałe komunikaty, które nie zostały spełnione, przeczytaj komunikaty z kolejki źródłowej i wyślij je ponownie do kolejki docelowej.

Tymczasowa baza danych jest używana podczas operacji RESTORE

Gdy baza danych jest przywracana w SQL Managed Instance, usługa przywracania najpierw utworzy pustą bazę danych o żądanej nazwie, aby przydzielić nazwę w wystąpieniu. Po pewnym czasie ta baza danych zostanie porzucona, a przywrócenie rzeczywistej bazy danych zostanie uruchomione.

Baza danych, która jest w stanie Przywracania , tymczasowo będzie miała losową wartość identyfikatora GUID zamiast nazwy. Nazwa tymczasowa zostanie zmieniona na żądaną nazwę określoną w RESTORE instrukcji po zakończeniu procesu przywracania.

W fazie początkowej użytkownik może uzyskać dostęp do pustej bazy danych, a nawet utworzyć tabele lub załadować dane w tej bazie danych. Ta tymczasowa baza danych zostanie porzucona po uruchomieniu drugiej fazy usługi przywracania.

Obejście: nie uzyskaj dostępu do przywracającej bazy danych, dopóki nie zobaczysz, że przywracanie zostanie ukończone.

Przekraczanie miejsca do magazynowania z małymi plikami bazy danych

CREATE DATABASEinstrukcje , ALTER DATABASE ADD FILEi RESTORE DATABASE mogą zakończyć się niepowodzeniem, ponieważ wystąpienie może osiągnąć limit usługi Azure Storage.

Każde wystąpienie Ogólnego przeznaczenia SQL Managed Instance ma maksymalnie 35 TB magazynu zarezerwowanego dla miejsca na dysku w warstwie Premium platformy Azure. Każdy plik bazy danych jest umieszczany na osobnym dysku fizycznym. Rozmiary dysków mogą wynosić 128 GB, 256 GB, 512 GB, 1 TB lub 4 TB. Nieużywane miejsce na dysku nie jest naliczane, ale łączna suma rozmiarów dysków w warstwie Premium platformy Azure nie może przekraczać 35 TB. W niektórych przypadkach wystąpienie zarządzane, które nie wymaga łącznie 8 TB, może przekroczyć limit 35 TB platformy Azure dla rozmiaru magazynu z powodu fragmentacji wewnętrznej.

Na przykład wystąpienie Ogólnego przeznaczenia SQL Managed Instance może mieć jeden duży plik o rozmiarze 1,2 TB umieszczonym na dysku o pojemności 4 TB. Może również zawierać 248 plików o rozmiarze 1 GB i umieszczonych na oddzielnych dyskach 128 GB. W tym przykładzie:

  • Łączny przydzielony rozmiar magazynu dysku wynosi 1 x 4 TB + 248 x 128 GB = 35 TB.
  • Łączna ilość zarezerwowanego miejsca dla baz danych w wystąpieniu wynosi 1 x 1,2 TB + 248 x 1 GB = 1,4 TB.

W tym przykładzie pokazano, że w pewnych okolicznościach ze względu na konkretną dystrybucję plików wystąpienie SQL Managed Instance może osiągnąć limit 35 TB zarezerwowany dla dołączonego dysku Azure Premium Disk, gdy może się tego nie spodziewać.

W tym przykładzie istniejące bazy danych nadal działają i mogą rosnąć bez problemu, o ile nowe pliki nie są dodawane. Nie można utworzyć ani przywrócić nowych baz danych, ponieważ nie ma wystarczającej ilości miejsca na nowe dyski, nawet jeśli całkowity rozmiar wszystkich baz danych nie osiągnie limitu rozmiaru wystąpienia. Błąd zwrócony w tym przypadku nie jest jasny.

Liczbę pozostałych plików można zidentyfikować przy użyciu widoków systemowych. Jeśli osiągniesz ten limit, spróbuj opróżnić i usunąć niektóre z mniejszych plików przy użyciu instrukcji DBCC SHRINKFILE lub przełączyć się do warstwy Krytyczne dla działania firmy, która nie ma tego limitu.

Wyświetlane wartości identyfikatora GUID zamiast nazw baz danych

Kilka widoków systemowych, liczników wydajności, komunikatów o błędach, XEvents i wpisów dziennika błędów wyświetla identyfikatory bazy danych GUID zamiast rzeczywistych nazw baz danych. Nie polegaj na tych identyfikatorach GUID, ponieważ są one zastępowane rzeczywistymi nazwami baz danych w przyszłości.

Obejście: Użyj sys.databases widoku, aby rozpoznać rzeczywistą nazwę bazy danych z nazwy fizycznej bazy danych określonej w postaci identyfikatorów bazy danych GUID:

SELECT name as ActualDatabaseName, physical_database_name as GUIDDatabaseIdentifier 
FROM sys.databases
WHERE database_id > 4;

Zakres transakcji w dwóch bazach danych w tym samym wystąpieniu nie jest obsługiwany

(Rozwiązano w marcu 2020 r.) Klasa TransactionScope na platformie .NET nie działa, jeśli dwa zapytania są wysyłane do dwóch baz danych w tym samym wystąpieniu w tym samym zakresie transakcji:

using (var scope = new TransactionScope())
{
    using (var conn1 = new SqlConnection("Server=quickstartbmi.neu15011648751ff.database.windows.net;Database=b;User ID=myuser;Password=mypassword;Encrypt=true"))
    {
        conn1.Open();
        SqlCommand cmd1 = conn1.CreateCommand();
        cmd1.CommandText = string.Format("insert into T1 values(1)");
        cmd1.ExecuteNonQuery();
    }

    using (var conn2 = new SqlConnection("Server=quickstartbmi.neu15011648751ff.database.windows.net;Database=b;User ID=myuser;Password=mypassword;Encrypt=true"))
    {
        conn2.Open();
        var cmd2 = conn2.CreateCommand();
        cmd2.CommandText = string.Format("insert into b.dbo.T2 values(2)");        cmd2.ExecuteNonQuery();
    }

    scope.Complete();
}

Obejście (nie jest wymagane od marca 2020 r.): użyj polecenia SqlConnection.ChangeDatabase(String), aby użyć innej bazy danych w kontekście połączenia zamiast używania dwóch połączeń.

Moduły CLR i połączone serwery czasami nie mogą odwoływać się do lokalnego adresu IP

Moduły CLR w SQL Managed Instance i połączonych serwerach lub zapytaniach rozproszonych odwołujących się do bieżącego wystąpienia czasami nie mogą rozpoznać adresu IP wystąpienia lokalnego. Ten błąd jest przejściowym problemem.

Zakres transakcji w dwóch bazach danych w tym samym wystąpieniu nie jest obsługiwany

(Rozwiązano w marcu 2020 r.) Klasa TransactionScope na platformie .NET nie działa, jeśli dwa zapytania są wysyłane do dwóch baz danych w tym samym wystąpieniu w tym samym zakresie transakcji:

using (var scope = new TransactionScope())
{
    using (var conn1 = new SqlConnection("Server=quickstartbmi.neu15011648751ff.database.windows.net;Database=b;User ID=myuser;Password=mypassword;Encrypt=true"))
    {
        conn1.Open();
        SqlCommand cmd1 = conn1.CreateCommand();
        cmd1.CommandText = string.Format("insert into T1 values(1)");
        cmd1.ExecuteNonQuery();
    }

    using (var conn2 = new SqlConnection("Server=quickstartbmi.neu15011648751ff.database.windows.net;Database=b;User ID=myuser;Password=mypassword;Encrypt=true"))
    {
        conn2.Open();
        var cmd2 = conn2.CreateCommand();
        cmd2.CommandText = string.Format("insert into b.dbo.T2 values(2)");        cmd2.ExecuteNonQuery();
    }

    scope.Complete();
}

Obejście (nie jest wymagane od marca 2020 r.): użyj polecenia SqlConnection.ChangeDatabase(String), aby użyć innej bazy danych w kontekście połączenia zamiast używania dwóch połączeń.

Brak rozwiązania

Zwiększona liczba logowań systemowych używanych do replikacji transakcyjnej

Azure SQL Managed Instance usługa tworzy identyfikator logowania systemu do celów replikacji transakcyjnej. Ten identyfikator logowania można znaleźć w programie SSMS (w eksploratorze obiektów w sekcji Zabezpieczenia, logowania) lub w widoku systemowym sys.syslogins. Format nazwy logowania wygląda następująco: "DBxCy\WF-abcde01234QWERT" i identyfikator logowania ma rolę serwera publicznego. W pewnych warunkach ten identyfikator logowania jest ponownie utworzony i z powodu błędu w poprzednim logowaniu systemu nie zostanie usunięty. Może to prowadzić do zwiększenia liczby logowań. Te identyfikatory logowania nie reprezentują zagrożenia bezpieczeństwa. Można je bezpiecznie zignorować. Nie należy usuwać tych identyfikatorów logowania, ponieważ co najmniej jeden z nich jest używany do replikacji transakcyjnej.

Tabela msdb dla ręcznych kopii zapasowych nie zachowuje nazwy użytkownika

Niedawno wprowadziliśmy obsługę automatycznych kopii zapasowych w witrynie msdb. W ten sposób usunęliśmy przypadkowo nazwę użytkownika z ręcznych kopii zapasowych. Poprawka jest gotowa i zostanie wdrożona wraz z następną wersją.

Azure AD logowania i użytkownicy nie są obsługiwani w programie SSDT

narzędzia SQL Server Data Tools nie obsługują w pełni Azure AD logowania i użytkowników.

Personifikacja typów logowania Azure AD nie jest obsługiwana

Personifikacja przy użyciu EXECUTE AS USER lub EXECUTE AS LOGIN następujących podmiotów zabezpieczeń usługi Azure Active Directory (Azure AD) nie jest obsługiwana:

  • Aliasowani użytkownicy Azure AD. W tym przypadku zwracany jest następujący błąd: 15517.
  • Azure AD logowania i użytkowników na podstawie Azure AD aplikacji lub jednostek usługi. W tym przypadku są zwracane następujące błędy: 15517 i 15406.

Replikacja transakcyjna musi zostać ponownie skonfigurowana po przejściu w tryb failover geograficznym

Jeśli replikacja transakcyjna jest włączona w bazie danych w grupie automatycznego trybu failover, administrator SQL Managed Instance musi wyczyścić wszystkie publikacje w starym podstawowym i ponownie skonfigurować je w nowym podstawowym po przejściu w tryb failover do innego regionu. Aby uzyskać więcej informacji, zobacz Replikacja.

Struktura bazy danych Tempdb i zawartość są tworzone ponownie

Baza tempdb danych jest zawsze podzielona na 12 plików danych, a struktura plików nie może zostać zmieniona. Nie można zmienić maksymalnego rozmiaru pliku, a do pliku nie można dodać tempdbnowych plików. Baza tempdb danych jest zawsze tworzona ponownie jako pusta baza danych po uruchomieniu wystąpienia lub przełączeniu w tryb failover, a wszelkie zmiany wprowadzone w tempdb programie nie zostaną zachowane.

Dzienniki błędów nie są utrwalane

Dzienniki błędów dostępne w SQL Managed Instance nie są utrwalane, a ich rozmiar nie jest uwzględniany w maksymalnym limicie magazynu. Dzienniki błędów mogą zostać automatycznie wymazane w przypadku przejścia w tryb failover. W historii dziennika błędów mogą występować luki, ponieważ SQL Managed Instance został przeniesiony kilka razy na kilku maszynach wirtualnych.

Resolved

Wykonywanie zapytania w tabeli zewnętrznej kończy się niepowodzeniem z komunikatem o błędzie informującym o braku obsługi

Wykonywanie zapytań względem tabeli zewnętrznej może zakończyć się niepowodzeniem z ogólnym komunikatem o błędzie "Zapytania dotyczące tabel zewnętrznych nie są obsługiwane z bieżącą warstwą usługi lub poziomem wydajności tej bazy danych. Rozważ uaktualnienie warstwy usługi lub poziomu wydajności bazy danych". Jedynym typem tabeli zewnętrznej obsługiwanym w usłudze Azure SQL Managed Instance są tabele zewnętrzne polyBase (w wersji zapoznawczej). Aby zezwolić na zapytania w tabelach zewnętrznych programu PolyBase, należy włączyć program PolyBase w wystąpieniu zarządzanym, uruchamiając polecenie sp_configure.

Tabele zewnętrzne związane z funkcją elastycznego zapytania bazy danych Azure SQL nie są obsługiwane w SQL Managed Instance, ale tworzenie i wykonywanie zapytań nie zostało jawnie zablokowane. Dzięki obsłudze tabel zewnętrznych programu PolyBase wprowadzono nowe kontrole, blokując wykonywanie zapytań o dowolny typ tabeli zewnętrznej w wystąpieniu zarządzanym, chyba że program PolyBase jest włączony.

Jeśli używasz nieobsługiwanych tabel zewnętrznych elastic Query do wykonywania zapytań dotyczących danych w bazie danych Azure SQL lub Azure Synapse z wystąpienia zarządzanego, należy zamiast tego użyć funkcji połączonego serwera. Aby nawiązać połączenie z serwerem połączonym z SQL Managed Instance do SQL Database, postępuj zgodnie z instrukcjami z tego artykułu. Aby ustanowić połączenie serwera połączonego z SQL Managed Instance do usługi SQL Synapse, sprawdź instrukcje krok po kroku. Ponieważ konfigurowanie i testowanie połączenia serwera połączonego zajmuje trochę czasu, możesz użyć obejścia jako tymczasowego rozwiązania, aby włączyć wykonywanie zapytań względem tabel zewnętrznych związanych z funkcją Elastic Query:

Obejście: Wykonaj następujące polecenia (raz na wystąpienie), które umożliwią wykonywanie zapytań w tabelach zewnętrznych:

sp_configure 'polybase enabled', 1
go
reconfigure
go

W przypadku korzystania z uwierzytelniania SQL Server nazwy użytkowników z adresem "@" nie są obsługiwane

Nazwy użytkowników, które zawierają symbol "@" w środku (np. "abc@xy") nie mogą się zalogować przy użyciu uwierzytelniania SQL Server.

Przywracanie ręcznej kopii zapasowej bez sumy KONTROLNEj może zakończyć się niepowodzeniem

W pewnych okolicznościach ręczne tworzenie kopii zapasowych baz danych, które zostały wykonane w wystąpieniu zarządzanym bez sumy KONTROLNEj, może nie zostać przywrócone. W takich przypadkach ponów próbę przywrócenia kopii zapasowej do momentu pomyślnego zakończenia.

Obejście: Ręczne tworzenie kopii zapasowych baz danych w wystąpieniach zarządzanych z włączoną funkcją CHECKSUM.

Agent przestaje odpowiadać podczas modyfikowania, wyłączania lub włączania istniejących zadań

W pewnych okolicznościach modyfikowanie, wyłączanie lub włączanie istniejącego zadania może spowodować, że agent nie odpowiada. Problem jest automatycznie ograniczany po wykryciu, co powoduje ponowne uruchomienie procesu agenta.

Uprawnienia do grupy zasobów nie są stosowane do SQL Managed Instance

Gdy rola SQL Managed Instance współautora platformy Azure jest stosowana do grupy zasobów (RG), nie jest stosowana do SQL Managed Instance i nie ma żadnego wpływu.

Obejście: skonfiguruj rolę współautora SQL Managed Instance dla użytkowników na poziomie subskrypcji.

Zadania agenta SQL można przerwać przez ponowne uruchomienie procesu agenta

(Rozwiązano w marcu 2020 r.) Agent SQL tworzy nową sesję za każdym razem, gdy zadanie jest uruchamiane, stopniowo zwiększając zużycie pamięci. Aby uniknąć osiągnięcia limitu pamięci wewnętrznej, co spowoduje zablokowanie wykonywania zaplanowanych zadań, proces agenta zostanie uruchomiony ponownie po osiągnięciu progu użycia pamięci. Może to spowodować przerwanie wykonywania zadań uruchomionych w momencie ponownego uruchomienia.

@query parametr nie jest obsługiwany w sp_send_db_mail

Parametr @query w procedurze sp_send_db_mail nie działa.

Wprowadzający w błąd komunikat o błędzie w Azure Portal sugerujący odtworzenie jednostki usługi

Blok administratora usługi Active Directory Azure Portal dla Azure SQL Managed Instance może być wyświetlany następujący komunikat o błędzie, mimo że jednostka usługi już istnieje:

"Wystąpienie zarządzane wymaga jednostki usługi, aby uzyskać dostęp do usługi Azure Active Directory. Kliknij tutaj, aby utworzyć jednostkę usługi"

Ten komunikat o błędzie można zaniedbywać, jeśli jednostka usługi dla wystąpienia zarządzanego już istnieje i/lub uwierzytelnianie usługi Azure Active Directory w wystąpieniu zarządzanym działa.

Aby sprawdzić, czy jednostka usługi istnieje, przejdź do strony Aplikacje dla przedsiębiorstw na Azure Portal, wybierz pozycję Tożsamości zarządzane z listy rozwijanej Typ aplikacji, wybierz pozycję Zastosuj i wpisz nazwę wystąpienia zarządzanego w polu wyszukiwania. Jeśli nazwa wystąpienia jest wyświetlana na liście wyników, jednostka usługi już istnieje i nie są potrzebne żadne dalsze działania.

Jeśli już wykonano instrukcje z komunikatu o błędzie i kliknięto link z komunikatu o błędzie, jednostka usługi wystąpienia zarządzanego została ponownie utworzona. W takim przypadku przypisz Azure AD uprawnienia do odczytu do nowo utworzonej jednostki usługi, aby uwierzytelnianie Azure AD działało prawidłowo. Można to zrobić za pośrednictwem Azure PowerShell, postępując zgodnie z instrukcjami.

Współtworzenie zawartości

Aby współtworzyć dokumentację Azure SQL, zobacz przewodnik współautora witryny Docs.

Następne kroki

Aby uzyskać listę aktualizacji i ulepszeń SQL Managed Instance, zobacz SQL Managed Instance aktualizacje usługi.

Aby uzyskać informacje o aktualizacjach i ulepszeniach wszystkich usług platformy Azure, zobacz Aktualizacje usług.