T-SQL-Unterschiede zwischen SQL Server und Azure SQL-Datenbank
Beim Migrieren Ihrer Datenbank von SQL Server zu Azure SQL-Datenbank stellen Sie möglicherweise fest, dass Ihre SQL Server-Datenbanken vor der Migration etwas umstrukturiert werden müssen. 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 den Datenmigrations-Assistenten (DMA), 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 T-SQL-Funktionen, die von Anwendungen verwendet werden, werden in Microsoft SQL Server und in Azure SQL-Datenbank 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. Daher werden die meisten Features auf Instanzebene in 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, die sich auf Verfügbarkeitsgruppen beziehen, werden nicht von der SQL-Datenbank unterstützt, und die dynamischen Verwaltungssichten, die sich auf AlwaysOn-Verfügbarkeitsgruppen beziehen, werden auch nicht unterstützt.
Eine Liste der Funktionen, die von der SQL-Datenbank unterstützt bzw. nicht unterstützt werden, finden Sie unter Funktionen von Azure SQL-Datenbank. Diese Seite ergänzt diesen Artikel und konzentriert sich auf T-SQL-Anweisungen.
T-SQL-Syntaxanweisungen mit partiellen Unterschieden
Die grundlegenden DDL-Anweisungen sind verfügbar, DDL-Anweisungserweiterungen im Zusammenhang mit nicht unterstützten Features (etwa Dateiplatzierung auf dem Datenträger) werden jedoch nicht unterstützt.
- In SQL Server stehen für Anweisungen vom Typ
CREATE DATABASE
undALTER 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. Wenn Sie vor der Migration Datenbanken in SQL Server erstellen, ist dies möglicherweise nicht relevant. Wenn Sie allerdings T-SQL-Code migrieren, der Datenbanken erstellt, sollten Sie CREATE DATABASE (Azure SQL-Datenbank) mit der SQL Server-Syntax in CREATE DATABASE (SQL Server T-SQL) vergleichen, um sicherzustellen, dass alle 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
undALTER TABLE
verfügen über Optionen vom TypFILETABLE
undFILESTREAM
, die nicht mit SQL-Datenbank verwendet werden können, da diese Features nicht unterstützt werden. - Anweisungen vom Typ
CREATE LOGIN
undALTER LOGIN
werden zwar unterstützt, bieten aber weniger Optionen als in SQL Server zur Verfügung stehen. 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 und ALTER LOGIN sowie unter Autorisieren des Datenbankzugriffs für Azure 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, die sich auf die unter Featurevergleich: Azure SQL-Datenbank und Azure SQL Managed Instance beschriebenen nicht unterstützten Features beziehen, 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-Prinzipalen im Verbund mit Microsoft Entra ID (ehemals Azure Active Directory). Weitere Informationen finden Sie unter Herstellen einer Verbindung mit SQL-Datenbank oder Azure Synapse Analytics unter Verwendung der Microsoft Entra-Authentifizierung.
- 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 stattdessenEXECUTE AS USER
.- Erweiterbare Schlüsselverwaltung (Extensible Key Management, EKM) für Verschlüsselungsschlüssel. Kundenseitig verwaltete Schlüssel für Transparent Data Encryption (TDE) sowie Spaltenmasterschlüssel für Always Encrypted 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 der Momentaufnahme-, Transaktions- und Mergereplikation (in SQL-Datenbank nicht verfügbar). Replikationsabonnements werden unterstützt.
- Funktionen:
fn_get_sql
,fn_virtualfilestats
undfn_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: CLR-Integration
- Semantische Suche
- Serveranmeldeinformationen: Verwenden Sie stattdessen datenbankbezogene Anmeldeinformationen.
- Berechtigungen auf Serverebene:
GRANT
,REVOKE
undDENY
für 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
undRECONFIGURE
. 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 zur Grammatik und Syntax von T-SQL sowie Beispiele finden Sie unter Transact-SQL-Referenz (Datenbank-Engine).
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.
Nächste Schritte
Eine Liste der Funktionen, die von der SQL-Datenbank unterstützt bzw. nicht unterstützt werden, finden Sie unter Funktionen von Azure SQL-Datenbank.
Verwenden Sie den Datenmigrations-Assistenten, um Kompatibilitätsprobleme in Ihren SQL Server-Datenbanken vor der Migration zu Azure SQL-Datenbank zu erkennen und Ihre Datenbanken zu migrieren.