Freigeben über


T-SQL-Unterschiede zwischen SQL Server und Azure SQL-Datenbank

Wenn Sie Ihre Datenbank von SQL Server zu Azure SQL-Datenbank migrieren, stellen Sie möglicherweise fest, dass Ihre SQL Server-Datenbanken eine Neuentwicklung erfordern, bevor sie migriert werden können. Dieser Artikel enthält Anleitungen, die Ihnen sowohl bei der Durchführung dieser Umstrukturierung als auch beim Verstehen der Gründe helfen, warum diese Umstrukturierung notwendig ist. Verwenden Sie Azure Data Migration Service, um Inkompatibilitäten zu erkennen und Datenbanken zu Azure SQL-Datenbank zu migrieren.

Hinweis

Microsoft Entra ID war zuvor als Azure Active Directory (Azure AD) bekannt.

Übersicht

Die meisten Transact-SQL (T-SQL)-Features, die Von Anwendungen verwendet werden, werden sowohl in Microsoft SQL Server als auch in der Azure SQL-Datenbank vollständig unterstützt. Die zentralen SQL-Komponenten wie Datentypen, Operatoren sowie Zeichenfolgen-, Arithmetik-, logische und Cursorfunktionen funktionieren in SQL Server und in SQL-Datenbank gleich. Es gibt jedoch einige T-SQL-Unterschiede zwischen Elementen der Datendefinitionssprache (Data Definition Language, DDL) und der Datenbearbeitungssprache (Data Manipulation Language, DML), die dazu führen, dass T-SQL-Anweisungen und -Abfragen nur teilweise unterstützt werden (mehr dazu weiter unten in diesem Artikel).

Darüber hinaus werden einige Features und bestimmte Syntax überhaupt nicht unterstützt, da Azure SQL-Datenbank darauf ausgelegt ist, Features von Systemdatenbank- und Betriebssystemabhängigkeiten zu isolieren. Die meisten Features auf Instanzebene werden in der SQL-Datenbank nicht unterstützt. T-SQL-Anweisungen und -Optionen sind nicht verfügbar, wenn sie Optionen auf Instanzebene oder Betriebssystemkomponenten konfigurieren oder Dateisystemkonfigurationen angeben. Wenn solche Funktionen erforderlich sind, dann ist häufig eine andere geeignete Alternative von der SQL-Datenbank oder aus einem anderen Azure-Feature oder -Dienst verfügbar.

Hochverfügbarkeit ist beispielsweise in Azure SQL-Datenbank integriert. T-SQL-Anweisungen im Zusammenhang mit Verfügbarkeitsgruppen werden von der SQL-Datenbank nicht unterstützt, und die dynamischen Verwaltungsansichten im Zusammenhang mit Always On-Verfügbarkeitsgruppen werden ebenfalls nicht unterstützt.

Eine Liste der features, die von der SQL-Datenbank unterstützt und nicht unterstützt werden, finden Sie unter Features comparison: Azure SQL Database and Azure SQL Managed Instance. Diese Seite ergänzt diesen Artikel und konzentriert sich auf T-SQL-Anweisungen.

T-SQL-Syntaxanweisungen mit partiellen Unterschieden

Die wichtigsten DDL-Anweisungen sind verfügbar, DDL-Anweisungserweiterungen im Zusammenhang mit nicht unterstützten Features, z. B. die Platzierung von Dateien auf einem Datenträger, werden jedoch nicht unterstützt.

  • In SQL Server stehen für Anweisungen vom Typ CREATE DATABASE und ALTER DATABASE mehr als drei Dutzend Optionen zur Verfügung. Die Anweisungen enthalten Ablage von Dateien, FILESTREAM und Service Broker-Optionen, die nur für SQL Server gelten. Dies spielt möglicherweise keine Rolle, wenn Sie Datenbanken in sql-Datenbank erstellen, bevor Sie migrieren, aber wenn Sie T-SQL-Code migrieren, der Datenbanken erstellt, sollten Sie CREATE DATABASE (Azure SQL Database) mit der SQL Server-Syntax bei CREATE DATABASE (SQL Server T-SQL) vergleichen, um sicherzustellen, dass alle von Ihnen verwendeten Optionen unterstützt werden. CREATE DATABASE für Azure SQL-Datenbank verfügt auch über Optionen für Dienstziele und für Pools für elastische Datenbanken, die nur für SQL-Datenbank gelten.
  • Die Anweisungen CREATE TABLE und ALTER TABLE verfügen über Optionen vom Typ FILETABLE und FILESTREAM, die nicht mit SQL-Datenbank verwendet werden können, da diese Features nicht unterstützt werden.
  • Das Erstellen, Ändern oder Ablegen von Benutzerobjekten wie Tabellen, Ansichten oder gespeicherten Prozeduren mithilfe der entsprechenden CREATE, ALTERund DROP Anweisungen in der master Datenbank auf einem logischen Server wird nicht unterstützt.
  • CREATE LOGIN und ALTER LOGIN Anweisungen werden unterstützt, bieten jedoch nicht alle optionen, die in SQL Server verfügbar sind. Um die Portabilität der Datenbank zu verbessern, unterstützt die SQL-Datenbank nach Möglichkeit die Verwendung von eigenständigen Datenbankbenutzern anstelle von Anmeldungen. Weitere Informationen finden Sie unter CREATE LOGIN, ALTER LOGIN und Autorisieren des Datenbankzugriffs auf SQL-Datenbank, SQL Managed Instance und Azure Synapse Analytics.

In Azure SQL-Datenbank nicht unterstützte T-SQL-Syntax

Zusätzlich zu T-SQL-Anweisungen im Zusammenhang mit den nicht unterstützten Features, die im Vergleich zu Features beschrieben werden : Azure SQL-Datenbank und azure SQL Managed Instance, werden die folgenden Anweisungen und Gruppen von Anweisungen nicht unterstützt. Wenn die zu migrierende Datenbank eines der folgenden Features verwendet, muss Ihre Anwendung umstrukturiert werden, um die betroffenen T-SQL-Features und -Anweisungen zu entfernen.

  • Sortierung von Systemobjekten.
  • Verbindungsbezogen: Endpunktanweisungen. SQL-Datenbank unterstützt keine Windows-Authentifizierung. aber die Microsoft Entra-Authentifizierung. Dies umfasst die Authentifizierung von Active Directory-Prinzipale, die mit microsoft Entra-ID verbunden sind. Weitere Informationen finden Sie unter Microsoft Entra-Authentifizierung für Azure SQL.
  • Datenbank- und instanzübergreifende Abfragen mit drei- oder vierteiligen Namen. Dreiteilige Namen, die auf die Datenbank tempdb und auf die aktuelle Datenbank verweisen, werden unterstützt. Von elastischen Abfragen werden schreibgeschützte Verweise auf Tabellen in anderen MSSQL-Datenbanken unterstützt.
  • Datenbankübergreifende Besitzketten und die Datenbankeigenschaft TRUSTWORTHY.
  • EXECUTE AS LOGIN. Verwenden Sie stattdessen EXECUTE AS USER.
  • Erweiterbare Schlüsselverwaltung (Extensible Key Management, EKM) für Verschlüsselungsschlüssel. Transparente Datenverschlüsselung (TDE) vom Kunden verwaltete Schlüssel und Always Encrypted Column Master Keys können in Azure Key Vault gespeichert werden.
  • Ereignisse: Ereignisbenachrichtigungen, Abfragebenachrichtigungen.
  • Dateieigenschaften: Syntax im Zusammenhang mit Datenbankdateiname, Platzierung, Größe und anderen Dateieigenschaften, die automatisch von SQL-Datenbank verwaltet werden.
  • Hochverfügbarkeit: Syntax im Zusammenhang mit Hochverfügbarkeit und Datenbankwiederherstellung (werden von SQL-Datenbank verwaltet). Dies schließt die Syntax für Sicherung, Wiederherstellung, Always On, Datenbankspiegelung, Protokollversand und Wiederherstellungsmodelle ein.
  • Syntax im Zusammenhang mit Momentaufnahme, Transaktions- und Zusammenführungsreplikation, die in der SQL-Datenbank nicht verfügbar ist. Replikationsabonnements werden unterstützt.
  • Funktionen: fn_get_sql, fn_virtualfilestats und fn_virtualservernodes.
  • Instanzkonfiguration: Syntax im Zusammenhang mit Serverarbeitsspeicher, Arbeitsthreads, CPU-Affinität und Ablaufverfolgungsflags. Verwenden Sie stattdessen Dienstebenen und Computegrößen.
  • KILL STATS JOB.
  • OPENQUERY, OPENDATASOURCE und vierteilige Namen.
  • .NET Framework: Common Language Runtime (CLR)-Integration
  • Semantische Suche
  • Serveranmeldeinformationen: Verwenden Sie stattdessen datenbankbezogene Anmeldeinformationen.
  • Berechtigungen auf Serverebene: GRANT, REVOKEund DENY berechtigungen auf Serverebene werden nicht unterstützt. Einige Berechtigungen auf Serverebene werden durch Berechtigungen auf Datenbankebene ersetzt oder implizit durch integrierte Serverrollen gewährt. Für einige DMVs und Katalogsichten auf Serverebene stehen ähnliche Sichten auf Datenbankebene zur Verfügung.
  • SET REMOTE_PROC_TRANSACTIONS
  • SHUTDOWN
  • sp_addmessage
  • sp_configure und RECONFIGURE. ALTER DATABASE SCOPED CONFIGURATION wird unterstützt.
  • sp_helpuser
  • sp_migrate_user_to_contained
  • SQL Server-Agent: Syntax, die auf dem SQL Server-Agent oder der msdb-Datenbank beruht: Warnungen, Operatoren, zentrale Verwaltungsserver. Verwenden Sie stattdessen Skripts (beispielsweise PowerShell).
  • SQL Server-Überwachung: Verwenden Sie stattdessen die Überwachung von SQL-Datenbank.
  • SQL Server-Ablaufverfolgung.
  • Ablaufverfolgungskennzeichen.
  • T-SQL-Debugging.
  • Trigger im Gültigkeitsbereich des Servers oder Anmeldetrigger.
  • Anweisung USE: Wenn Sie den Datenbankkontext in eine andere Datenbank ändern möchten, müssen Sie eine neue Verbindung mit dieser Datenbank erstellen.

Vollständige T-SQL-Referenz

Weitere Informationen zu T-SQL-Grammatik, -Verwendung und -Beispielen finden Sie unter Transact-SQL Referenz (Datenbankmodul).

Informationen zu Tags vom Typ "Gilt für"

Die T-SQL-Referenz enthält Artikel zu allen aktuellen SQL Server-Versionen. Unter der Artikelüberschrift befindet sich eine Symbolleiste, die angibt, für welche MSSQL-Plattformen der jeweilige Artikel gilt. Beispielsweise wurden Verfügbarkeitsgruppen in SQL Server 2012 eingeführt. Der Artikel CREATE AVAILABILITY GROUP gibt an, dass die Anweisung für SQL Server gilt (ab SQL Server 2012) . Die Anweisung gilt nicht für SQL Server 2008, SQL Server 2008 R2, Azure SQL-Datenbank, Azure Synapse Analytics oder Parallel Data Warehouse.

In einigen Fällen kann der allgemeine Gegenstand eines Artikels in einem Produkt verwendet werden, es liegen jedoch kleine Unterschiede im Hinblick auf die verschiedenen Produkte vor. Die Unterschiede werden dann im Artikel entsprechend angegeben. Der Artikel CREATE TRIGGER ist beispielsweise in SQL-Datenbank verfügbar. Die Option ALL SERVER für Trigger auf Serverebene signalisiert jedoch, dass Trigger auf Serverebene in SQL-Datenbank nicht verwendet werden können. Verwenden Sie stattdessen Trigger auf Datenbankebene.