T-SQL-verschillen tussen SQL Server en Azure SQL Database

Wanneer u uw database migreert van SQL Server naar Azure SQL Database, kunt u ontdekken dat uw SQL Server-databases enige her-engineering vereisen voordat ze kunnen worden gemigreerd. Dit artikel bevat richtlijnen om u te helpen bij het uitvoeren van deze her-engineering en het begrijpen van de onderliggende redenen waarom de re-engineering nodig is. Gebruik Data Migration Assistant (DMA) om incompatibiliteit te detecteren en databases te migreren naar Azure SQL Database.

Notitie

Microsoft Entra-id is de nieuwe naam voor Azure Active Directory (Azure AD). Op dit moment wordt de documentatie bijgewerkt.

Overzicht

De meeste T-SQL-functies die toepassingen gebruiken, worden volledig ondersteund in zowel Microsoft SQL Server als Azure SQL Database. De belangrijkste SQL-onderdelen, zoals gegevenstypen, operators, tekenreeksen, rekenkundige, logische en cursorfuncties, werken bijvoorbeeld identiek in SQL Server en SQL Database. Er zijn echter enkele T-SQL-verschillen in DDL-elementen (data definition language) en DML (gegevensmanipulatietaal) die resulteren in T-SQL-instructies en -query's die slechts gedeeltelijk worden ondersteund (die verderop in dit artikel worden besproken).

Daarnaast zijn er enkele functies en syntaxis die helemaal niet worden ondersteund, omdat Azure SQL Database is ontworpen om functies te isoleren van afhankelijkheden van de systeemdatabases en het besturingssysteem. Als zodanig worden de meeste functies op exemplaarniveau niet ondersteund in SQL Database. T-SQL-instructies en -opties zijn niet beschikbaar als ze opties op exemplaarniveau, onderdelen van het besturingssysteem configureren of de configuratie van het bestandssysteem opgeven. Wanneer dergelijke mogelijkheden vereist zijn, is een geschikt alternatief vaak op een andere manier beschikbaar vanuit SQL Database of vanuit een andere Azure-functie of -service.

Hoge beschikbaarheid is bijvoorbeeld ingebouwd in Azure SQL Database. T-SQL-instructies met betrekking tot beschikbaarheidsgroepen worden niet ondersteund door SQL Database en de dynamische beheerweergaven met betrekking tot AlwaysOn-beschikbaarheidsgroepen worden ook niet ondersteund.

Zie azure SQL Database-functievergelijking voor een lijst met functies die worden ondersteund en die niet worden ondersteund door SQL Database. Deze pagina is een aanvulling op dat artikel en richt zich op T-SQL-instructies.

T-SQL-syntaxisinstructies met gedeeltelijke verschillen

De DDL-kerninstructies zijn beschikbaar, maar DDL-instructieextensies met betrekking tot niet-ondersteunde functies, zoals bestandsplaatsing op schijf, worden niet ondersteund.

  • In SQL Server CREATE DATABASEALTER DATABASE hebben meer dan drie dozijn opties. De instructies omvatten bestandsplaatsing, FILESTREAM en servicebrokeropties die alleen van toepassing zijn op SQL Server. Dit maakt mogelijk niet uit als u databases maakt in SQL Database voordat u migreert, maar als u T-SQL-code migreert waarmee databases worden gemaakt, moet u CREATE DATABASE (Azure SQL Database) vergelijken met de SQL Server-syntaxis bij CREATE DATABASE (SQL Server T-SQL) om ervoor te zorgen dat alle opties die u gebruikt worden ondersteund. CREATE DATABASE voor Azure SQL Database heeft ook opties voor servicedoelstelling en elastische pools die alleen van toepassing zijn op SQL Database.
  • De CREATE TABLE instructies ALTER TABLE hebben FILETABLE en FILESTREAM opties die niet kunnen worden gebruikt voor SQL Database, omdat deze functies niet worden ondersteund.
  • CREATE LOGIN en ALTER LOGIN instructies worden ondersteund, maar bieden niet alle opties die beschikbaar zijn in SQL Server. Om uw database draagbaarder te maken, moedigt SQL Database het gebruik van ingesloten databasegebruikers aan in plaats van waar mogelijk aan te melden. Zie CREATE LOGIN en ALTER LOGIN and Manage logins and Manage logins and users voor meer informatie.

T-SQL-syntaxis wordt niet ondersteund in Azure SQL Database

Naast T-SQL-instructies met betrekking tot de niet-ondersteunde functies die worden beschreven in azure SQL Database-functievergelijking, worden de volgende instructies en groepen instructies niet ondersteund. Als uw database die moet worden gemigreerd een van de volgende functies gebruikt, moet u uw toepassing opnieuw ontwikkelen om deze T-SQL-functies en -instructies te elimineren.

  • Sortering van systeemobjecten.
  • Verbinding maken ie gerelateerd: Eindpuntinstructies. SQL Database biedt geen ondersteuning voor Windows-verificatie, maar biedt wel ondersteuning voor Microsoft Entra-verificatie. Dit omvat verificatie van Active Directory-principals die zijn gefedereerd met Microsoft Entra ID (voorheen Azure Active Directory). Zie Verbinding maken ing naar SQL Database of Azure Synapse Analytics met behulp van Microsoft Entra-verificatie voor meer informatie.
  • Query's voor meerdere databases en meerdere exemplaren met behulp van drie of vier onderdeelnamen. Drie deelnamen die verwijzen naar de tempdb database en de huidige database worden ondersteund. Elastische query ondersteunt alleen-lezenverwijzingen naar tabellen in andere MSSQL-databases.
  • Eigendomskoppeling tussen databases en de TRUSTWORTHY database-eigenschap.
  • EXECUTE AS LOGIN. Gebruik in plaats daarvan EXECUTE AS USER.
  • Extensible Key Management (EKM) voor versleutelingssleutels. Door de klant beheerde TDE-sleutels (Transparent Data Encryption) en Always Encrypted-kolomhoofdsleutels kunnen worden opgeslagen in Azure Key Vault.
  • Gebeurtenis: gebeurtenismeldingen, querymeldingen.
  • Bestandseigenschappen: Syntaxis met betrekking tot databasebestandsnaam, plaatsing, grootte en andere bestandseigenschappen die automatisch worden beheerd door SQL Database.
  • Hoge beschikbaarheid: syntaxis met betrekking tot hoge beschikbaarheid en databaseherstel, die worden beheerd door SQL Database. Dit omvat syntaxis voor back-up, herstellen, AlwaysOn, databasespiegeling, logboekverzending, herstelmodellen.
  • Syntaxis met betrekking tot momentopname, transactionele en samenvoegreplicatie, die niet beschikbaar is in SQL Database. Replicatieabonnementen worden ondersteund.
  • Functies: fn_get_sql, fn_virtualfilestats, fn_virtualservernodes.
  • Exemplaarconfiguratie: Syntaxis met betrekking tot servergeheugen, werkthreads, CPU-affiniteit, traceringsvlagmen. Gebruik in plaats daarvan servicelagen en rekengrootten.
  • KILL STATS JOB.
  • OPENQUERY, OPENDATASOURCEen vierdelige namen.
  • .NET Framework: CLR-integratie
  • Semantische zoekopdrachten
  • Serverreferenties: gebruik in plaats daarvan databasereferenties .
  • Machtigingen op serverniveau: GRANT, REVOKEen DENY van machtigingen op serverniveau worden niet ondersteund. Sommige machtigingen op serverniveau worden vervangen door machtigingen op databaseniveau of impliciet verleend door ingebouwde serverfuncties. Sommige DMV's op serverniveau en catalogusweergaven hebben vergelijkbare weergaven op databaseniveau.
  • SET REMOTE_PROC_TRANSACTIONS
  • SHUTDOWN
  • sp_addmessage
  • sp_configure en RECONFIGURE. ALTER DATABASE SCOPED CONFIGURATION wordt ondersteund.
  • sp_helpuser
  • sp_migrate_user_to_contained
  • SQL Server Agent: syntaxis die afhankelijk is van de SQL Server Agent of de msdb database: waarschuwingen, operators, centrale beheerservers. Gebruik in plaats daarvan scripting, zoals PowerShell.
  • SQL Server-controle: gebruik in plaats daarvan SQL Database-controle.
  • SQL Server-tracering.
  • Traceermarkeringen.
  • T-SQL-foutopsporing.
  • Triggers voor serverbereik of aanmelding.
  • USE instructie: Als u de databasecontext wilt wijzigen in een andere database, moet u een nieuwe verbinding met die database maken.

Volledige T-SQL-verwijzing

Zie T-SQL Reference (Database Engine) voor meer informatie over T-SQL-grammatica, -gebruik en -voorbeelden.

Over het label 'Van toepassing op'

De T-SQL-verwijzing bevat artikelen met betrekking tot alle recente SQL Server-versies. Onder de titel van het artikel ziet u een pictogrambalk met MSSQL-platforms en geeft u de toepasbaarheid aan. Beschikbaarheidsgroepen zijn bijvoorbeeld geïntroduceerd in SQL Server 2012. Het artikel CREATE AVAILABILITY GROUP geeft aan dat de instructie van toepassing is op SQL Server (vanaf 2012). De instructie is niet van toepassing op SQL Server 2008, SQL Server 2008 R2, Azure SQL Database, Azure Synapse Analytics of Parallel Data Warehouse.

In sommige gevallen kan het algemene onderwerp van een artikel worden gebruikt in een product, maar er zijn kleine verschillen tussen producten. De verschillen worden waar nodig aangegeven op middelpunten in het artikel. Het artikel is bijvoorbeeld CREATE TRIGGER beschikbaar in SQL Database. Maar de ALL SERVER optie voor triggers op serverniveau geeft aan dat triggers op serverniveau niet kunnen worden gebruikt in SQL Database. Gebruik in plaats daarvan triggers op databaseniveau.

Volgende stappen

Zie azure SQL Database-functievergelijking voor een lijst met functies die worden ondersteund en die niet worden ondersteund door SQL Database.

Gebruik Data Migration Assistant (DMA) om compatibiliteitsproblemen in uw SQL Server-databases te detecteren voordat u naar Azure SQL Database migreert en om uw databases te migreren.