Różnice języka T-SQL między programem SQL Server i usługą Azure SQL Database

Podczas migrowania bazy danych z programu SQL Server do usługi Azure SQL Database można wykryć, że bazy danych programu SQL Server wymagają ponownej inżynierii przed przeprowadzeniem migracji. Ten artykuł zawiera wskazówki ułatwiające zarówno wykonanie tej ponownej inżynierii, jak i zrozumienie podstawowych powodów, dla których konieczna jest ponowna inżynieria. Aby wykrywać niezgodności i migrować bazy danych do usługi Azure SQL Database, użyj usługi Data Asystent migracji (DMA).

Uwaga

Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).

Omówienie

Większość funkcji języka T-SQL używanych przez aplikacje jest w pełni obsługiwana zarówno w programie Microsoft SQL Server, jak i usłudze Azure SQL Database. Na przykład podstawowe składniki SQL, takie jak typy danych, operatory, ciągi, arytmetyczne, logiczne i kursory, działają identycznie w programie SQL Server i usłudze SQL Database. Istnieje jednak kilka różnic w języku T-SQL w języku DDL (język definicji danych) i elementach DML (język manipulowania danymi), co skutkuje instrukcjami i zapytaniami języka T-SQL, które są obsługiwane tylko częściowo (które omówimy w dalszej części tego artykułu).

Ponadto istnieją pewne funkcje i składnia, które nie są w ogóle obsługiwane, ponieważ usługa Azure SQL Database została zaprojektowana tak, aby odizolować funkcje od zależności od systemowych baz danych i systemu operacyjnego. W związku z tym większość funkcji na poziomie wystąpienia nie jest obsługiwana w usłudze SQL Database. Instrukcje i opcje języka T-SQL nie są dostępne, jeśli konfigurują opcje na poziomie wystąpienia, składniki systemu operacyjnego lub określają konfigurację systemu plików. Jeśli takie możliwości są wymagane, odpowiednia alternatywa jest często dostępna w inny sposób z usługi SQL Database lub innej funkcji lub usługi platformy Azure.

Na przykład wysoka dostępność jest wbudowana w usługę Azure SQL Database. Instrukcje T-SQL związane z grupami dostępności nie są obsługiwane przez usługę SQL Database, a dynamiczne widoki zarządzania związane z zawsze włączonymi grupami dostępności również nie są obsługiwane.

Aby uzyskać listę funkcji obsługiwanych i nieobsługiwanych przez usługę SQL Database, zobacz Porównanie funkcji usługi Azure SQL Database. Ta strona uzupełnia ten artykuł i koncentruje się na instrukcjach języka T-SQL.

Instrukcje składni języka T-SQL z częściowymi różnicami

Dostępne są podstawowe instrukcje DDL, ale rozszerzenia instrukcji DDL związane z nieobsługiwanymi funkcjami, takimi jak umieszczanie plików na dysku, nie są obsługiwane.

  • W programie SQL Server CREATE DATABASE i ALTER DATABASE instrukcje mają ponad trzy tuziny opcji. Instrukcje obejmują umieszczanie plików, plikSTREAM i opcje brokera usług, które mają zastosowanie tylko do programu SQL Server. Może to nie mieć znaczenia, jeśli przed migracją tworzysz bazy danych w usłudze SQL Database, ale jeśli migrujesz kod T-SQL, który tworzy bazy danych, należy porównać bazę danych CREATE DATABASE (Azure SQL Database) ze składnią programu SQL Server w artykule CREATE DATABASE (SQL Server T-SQL), aby upewnić się, że wszystkie używane opcje są obsługiwane. CREATE DATABASE W przypadku usługi Azure SQL Database dostępne są również opcje celu usługi i elastycznej puli, które mają zastosowanie tylko do usługi SQL Database.
  • Instrukcje CREATE TABLE i ALTER TABLE mają FILETABLE opcje i FILESTREAM , których nie można używać w usłudze SQL Database, ponieważ te funkcje nie są obsługiwane.
  • CREATE LOGIN Instrukcje i ALTER LOGIN są obsługiwane, ale nie oferują wszystkich opcji dostępnych w programie SQL Server. Aby zwiększyć przenośność bazy danych, usługa SQL Database zachęca użytkowników zawartej bazy danych zamiast logowań, gdy jest to możliwe. Aby uzyskać więcej informacji, zobacz CREATE LOGIN and ALTER LOGIN and Manage logins and Manage logins and users (TWORZENIE IDENTYFIKATORÓW LOGOWANIA i ALTER LOGIN) oraz Manage logins and users (Zarządzanie nazwami logowania i użytkownikami).

Składnia języka T-SQL nie jest obsługiwana w usłudze Azure SQL Database

Oprócz instrukcji języka T-SQL związanych z nieobsługiwanych funkcji opisanych w porównaniu funkcji usługi Azure SQL Database następujące instrukcje i grupy instrukcji nie są obsługiwane. W związku z tym, jeśli baza danych do zmigrowania używa dowolnej z następujących funkcji, ponownie zaprojektuj aplikację, aby wyeliminować te funkcje i instrukcje języka T-SQL.

  • Sortowanie obiektów systemowych.
  • Połączenie ion related: Endpoint statements (Powiązane z Połączenie ionem): instrukcje punktu końcowego. Usługa SQL Database nie obsługuje uwierzytelniania systemu Windows, ale obsługuje uwierzytelnianie Firmy Microsoft Entra. Obejmuje to uwierzytelnianie podmiotów zabezpieczeń usługi Active Directory federacyjnych za pomocą identyfikatora Entra firmy Microsoft (dawniej Azure Active Directory). Aby uzyskać więcej informacji, zobacz Połączenie do usługi SQL Database lub Azure Synapse Analytics przy użyciu uwierzytelniania firmy Microsoft Entra.
  • Zapytania obejmujące wiele baz danych i między wystąpieniami przy użyciu trzech lub czterech części nazw. Obsługiwane są trzy części odwołujące tempdb się do bazy danych i bieżącej bazy danych. Zapytanie elastyczne obsługuje odwołania tylko do odczytu do tabel w innych bazach danych MSSQL.
  • Łańcuch własności między bazami danych i TRUSTWORTHY właściwość bazy danych.
  • EXECUTE AS LOGIN. Użycie w zamian parametru EXECUTE AS USER.
  • Rozszerzone zarządzanie kluczami (EKM) dla kluczy szyfrowania. Klucze zarządzane przez klienta w technologii Transparent Data Encryption (TDE) i klucze główne kolumny Always Encrypted mogą być przechowywane w usłudze Azure Key Vault.
  • Zdarzenie: powiadomienia o zdarzeniach, powiadomienia o zapytaniach.
  • Właściwości pliku: Składnia powiązana z nazwą pliku bazy danych, umieszczaniem, rozmiarem i innymi właściwościami pliku automatycznie zarządzanymi przez usługę SQL Database.
  • Wysoka dostępność: Składnia związana z wysoką dostępnością i odzyskiwaniem bazy danych, które są zarządzane przez usługę SQL Database. Obejmuje to składnię tworzenia kopii zapasowych, przywracania, zawsze włączonej bazy danych, dublowania bazy danych, wysyłania dzienników, modeli odzyskiwania.
  • Składnia związana z replikacją migawki, transakcyjną i scalaną, która nie jest dostępna w usłudze SQL Database. Subskrypcje replikacji są obsługiwane.
  • Funkcje: fn_get_sql, fn_virtualfilestats, fn_virtualservernodes.
  • Konfiguracja wystąpienia: Składnia związana z pamięcią serwera, wątkami procesu roboczego, koligacją procesora CPU, flagami śledzenia. Zamiast tego używaj warstw usług i rozmiarów obliczeniowych.
  • KILL STATS JOB.
  • OPENQUERY, OPENDATASOURCEi czteroczęściowe nazwy.
  • .NET Framework: integracja środowiska CLR
  • Wyszukiwanie semantyczne
  • Poświadczenia serwera: zamiast tego użyj poświadczeń o określonym zakresie bazy danych.
  • Uprawnienia na poziomie serwera: GRANT, REVOKEi DENY uprawnień na poziomie serwera nie są obsługiwane. Niektóre uprawnienia na poziomie serwera są zastępowane przez uprawnienia na poziomie bazy danych lub przyznawane niejawnie przez wbudowane role serwera. Niektóre widoki DMV na poziomie serwera i widoki wykazu mają podobne widoki na poziomie bazy danych.
  • SET REMOTE_PROC_TRANSACTIONS
  • SHUTDOWN
  • sp_addmessage
  • sp_configure i RECONFIGURE. OBSŁUGIWANA JEST KONFIGURACJA ALTER DATABASE SCOPED.
  • sp_helpuser
  • sp_migrate_user_to_contained
  • SQL Server Agent: składnia, która opiera się na agencie programu SQL Server lub msdb bazie danych: alerty, operatory, centralne serwery zarządzania. Zamiast tego użyj skryptów, takich jak program PowerShell.
  • Inspekcja programu SQL Server: zamiast tego użyj inspekcji usługi SQL Database.
  • Ślad programu SQL Server.
  • Flagi śledzenia.
  • Debugowanie języka T-SQL.
  • Wyzwalacze logowania lub o zakresie serwera.
  • USE instrukcja: Aby zmienić kontekst bazy danych na inną bazę danych, musisz utworzyć nowe połączenie z bazą danych.

Pełna dokumentacja języka T-SQL

Aby uzyskać więcej informacji na temat gramatyki, użycia i przykładów języka T-SQL, zobacz T-SQL Reference (Aparat bazy danych).

Tagi „Applies to” (Dotyczy)

Dokumentacja języka T-SQL zawiera artykuły związane ze wszystkimi najnowszymi wersjami programu SQL Server. Poniżej tytułu artykułu znajduje się pasek ikon, lista platform MSSQL i wskazująca możliwość stosowania. Na przykład grupy dostępności zostały wprowadzone w programie SQL Server 2012. Artykuł CREATE AVAILABILITY GROUP (TWORZENIE GRUPY DOSTĘPNOŚCI) wskazuje, że instrukcja ma zastosowanie do programu SQL Server (począwszy od 2012 r.). Instrukcja nie ma zastosowania do programu SQL Server 2008, SQL Server 2008 R2, Azure SQL Database, Azure Synapse Analytics ani Parallel Data Warehouse.

W niektórych przypadkach ogólny temat artykułu może być używany w produkcie, ale istnieją niewielkie różnice między produktami. Różnice są wskazywane w punktach środkowych artykułu odpowiednio. Na przykład CREATE TRIGGER artykuł jest dostępny w usłudze SQL Database. ALL SERVER Jednak opcja wyzwalaczy na poziomie serwera wskazuje, że wyzwalacze na poziomie serwera nie mogą być używane w usłudze SQL Database. Zamiast tego użyj wyzwalaczy na poziomie bazy danych.

Następne kroki

Aby uzyskać listę funkcji obsługiwanych i nieobsługiwanych przez usługę SQL Database, zobacz Porównanie funkcji usługi Azure SQL Database.

Aby wykryć problemy ze zgodnością w bazach danych programu SQL Server przed migracją do usługi Azure SQL Database i przeprowadzić migrację baz danych, użyj Asystent migracji danych (DMA).