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 voor uw SQL Server databases enige nieuwe engineering is vereist voordat ze kunnen worden gemigreerd. Dit artikel bevat richtlijnen om u te helpen bij het uitvoeren van deze nieuwe engineering en het begrijpen van de onderliggende redenen waarom de her-engineering nodig is. Gebruik Data Migration Assistant (DMA) om incompatibiliteit te detecteren en databases te migreren naar Azure SQL Database.

Overzicht

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

Bovendien 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. Daarom 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 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 DATABASE en ALTER DATABASE instructies 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 DATABASEvoor 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 LOGINen ALTER LOGIN instructies worden ondersteund, maar bieden niet alle opties die beschikbaar zijn in SQL Server. Om uw database overdraagbaarder te maken, moedigt SQL Database het gebruik van ingesloten databasegebruikers aan in plaats van waar mogelijk aan te melden. Zie CREATE LOGIN and 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 ontwerpen om deze T-SQL-functies en -instructies te elimineren.

  • Sortering van systeemobjecten.
  • Verbinding gerelateerd: Eindpuntinstructies. SQL Database biedt geen ondersteuning voor Windows verificatie, maar biedt wel ondersteuning voor Azure Active Directory verificatie. Dit omvat verificatie van Active Directory-principals die zijn gefedereerd met Azure Active Directory. Zie Verbinding maken met SQL Database of Azure Azure Synapse Analytics met behulp van Azure Active Directory-verificatie voor meer informatie.
  • Query's tussen databases en meerdere exemplaren met behulp van drie of vier deelnamen. 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.
  • Eigendomsketen tussen databases en de TRUSTWORTHY databaseeigenschap.
  • EXECUTE AS LOGIN. Gebruik in plaats daarvan EXECUTE AS USER.
  • Uitbreidbaar sleutelbeheer (EKM) voor versleutelingssleutels. Transparent Data Encryption (TDE) door de klant beheerde sleutels 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 momentopnamen, 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 referenties in databasebereik .
  • 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 en catalogusweergaven op serverniveau 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 toepasselijkheid 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 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 tussen de middelpunten in het artikel aangegeven, indien van toepassing. 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 niet worden ondersteund door SQL Database.

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