T-SQL-skillnader mellan SQL Server och Azure SQL Database

När du migrerar din databas från SQL Server till Azure SQL Database kanske du upptäcker att dina SQL Server-databaser kräver viss omkonstruktion innan de kan migreras. Den här artikeln innehåller vägledning som hjälper dig att både utföra den här omkonstruktionen och förstå de underliggande orsakerna till varför omkonstruktionen är nödvändig. Om du vill identifiera inkompatibiliteter och migrera databaser till Azure SQL Database använder du Data Migration Assistant (DMA).

Kommentar

Microsoft Entra-ID är det nya namnet för Azure Active Directory (Azure AD). Vi uppdaterar dokumentationen just nu.

Översikt

De flesta T-SQL-funktioner som program använder stöds fullt ut i både Microsoft SQL Server och Azure SQL Database. Till exempel fungerar sql-kärnkomponenter som datatyper, operatorer, sträng-, aritmetiska, logiska och markörfunktioner på samma sätt i SQL Server och SQL Database. Det finns dock några T-SQL-skillnader i DDL-element (datadefinitionsspråk) och DML -element (datamanipuleringsspråk) som resulterar i T-SQL-instruktioner och frågor som endast delvis stöds (som vi diskuterar senare i den här artikeln).

Dessutom finns det vissa funktioner och syntax som inte stöds alls eftersom Azure SQL Database är utformat för att isolera funktioner från beroenden i systemdatabaserna och operativsystemet. Därför stöds inte de flesta instansnivåfunktioner i SQL Database. T-SQL-instruktioner och alternativ är inte tillgängliga om de konfigurerar alternativ på instansnivå, operativsystemkomponenter eller anger filsystemkonfiguration. När sådana funktioner krävs är ett lämpligt alternativ ofta tillgängligt på något annat sätt från SQL Database eller från en annan Azure-funktion eller tjänst.

Hög tillgänglighet är till exempel inbyggd i Azure SQL Database. T-SQL-instruktioner som rör tillgänglighetsgrupper stöds inte av SQL Database och dynamiska hanteringsvyer relaterade till AlwaysOn-tillgänglighetsgrupper stöds inte heller.

En lista över de funktioner som stöds och inte stöds av SQL Database finns i Funktionsjämförelse i Azure SQL Database. Den här sidan kompletterar den artikeln och fokuserar på T-SQL-instruktioner.

T-SQL-syntaxinstruktioner med partiella skillnader

DDL-kärninstruktionerna är tillgängliga, men DDL-instruktionstillägg relaterade till funktioner som inte stöds, till exempel filplacering på disk, stöds inte.

  • I SQL Server CREATE DATABASE och ALTER DATABASE -instruktioner finns över tre dussin alternativ. Instruktionerna omfattar filplacering, FILESTREAM och alternativ för tjänstutjämning som endast gäller för SQL Server. Det kanske inte spelar någon roll om du skapar databaser i SQL Database innan du migrerar, men om du migrerar T-SQL-kod som skapar databaser bör du jämföra CREATE DATABASE (Azure SQL Database) med SQL Server-syntaxen i CREATE DATABASE (SQL Server T-SQL) för att se till att alla alternativ som du använder stöds. CREATE DATABASE för Azure SQL Database finns även alternativ för tjänstmål och elastiska pooler som endast gäller för SQL Database.
  • Instruktionerna CREATE TABLE och ALTER TABLE har FILETABLE och FILESTREAM alternativ som inte kan användas i SQL Database eftersom dessa funktioner inte stöds.
  • CREATE LOGIN och ALTER LOGIN -instruktioner stöds, men erbjuder inte alla tillgängliga alternativ i SQL Server. För att göra databasen mer portabel rekommenderar SQL Database att använda oberoende databasanvändare i stället för inloggningar när det är möjligt. Mer information finns i SKAPA INLOGGNING och ÄNDRA INLOGGNING och Hantera inloggningar och användare.

T-SQL-syntax stöds inte i Azure SQL Database

Förutom T-SQL-instruktioner som rör funktioner som inte stöds som beskrivs i Funktionsjämförelse i Azure SQL Database stöds inte följande instruktioner och grupper av instruktioner. Om databasen som ska migreras använder någon av följande funktioner kan du därför återskapa programmet för att eliminera dessa T-SQL-funktioner och -instruktioner.

  • Sortering av systemobjekt.
  • Anslut ion relaterat: Slutpunktsuttryck. SQL Database stöder inte Windows-autentisering, men stöder Microsoft Entra-autentisering. Detta omfattar autentisering av Active Directory-huvudnamn federerade med Microsoft Entra-ID (tidigare Azure Active Directory). Mer information finns i Anslut till SQL Database eller Azure Synapse Analytics med hjälp av Microsoft Entra-autentisering.
  • Frågor mellan databaser och instanser med tre eller fyra delnamn. Tre delnamn som refererar till tempdb databasen och den aktuella databasen stöds. Elastisk fråga stöder skrivskyddade referenser till tabeller i andra MSSQL-databaser.
  • Korsdatabasägarlänkning och databasegenskapen TRUSTWORTHY .
  • EXECUTE AS LOGIN. Använd EXECUTE AS USER i stället.
  • Utökningsbar nyckelhantering (EKM) för krypteringsnycklar. transparent datakryptering (TDE) kundhanterade nycklar och Always Encrypted-kolumnhuvudnycklar kan lagras i Azure Key Vault.
  • Händelse: händelsemeddelanden, frågemeddelanden.
  • Filegenskaper: Syntax relaterad till databasfilnamn, placering, storlek och andra filegenskaper som hanteras automatiskt av SQL Database.
  • Hög tillgänglighet: Syntax som rör hög tillgänglighet och databasåterställning, som hanteras av SQL Database. Detta inkluderar syntax för säkerhetskopiering, återställning, AlwaysOn, databasspegling, loggleverans, återställningsmodeller.
  • Syntax som rör replikering av ögonblicksbilder, transaktioner och sammanslagningar, vilket inte är tillgängligt i SQL Database. Replikeringsprenumerationer stöds.
  • Funktioner: fn_get_sql, fn_virtualfilestats, fn_virtualservernodes.
  • Instanskonfiguration: Syntax relaterad till serverminne, arbetstrådar, CPU-tillhörighet, spårningsflaggor. Använd tjänstnivåer och beräkningsstorlekar i stället.
  • KILL STATS JOB.
  • OPENQUERY, OPENDATASOURCEoch namn i fyra delar.
  • .NET Framework: CLR-integrering
  • Semantisk sökning
  • Serverautentiseringsuppgifter: Använd autentiseringsuppgifter med databasomfattning i stället.
  • Behörigheter på servernivå: GRANT, REVOKEoch DENY för behörigheter på servernivå stöds inte. Vissa behörigheter på servernivå ersätts av behörigheter på databasnivå eller beviljas implicit av inbyggda serverroller. Vissa DMV:er på servernivå och katalogvyer har liknande vyer på databasnivå.
  • SET REMOTE_PROC_TRANSACTIONS
  • SHUTDOWN
  • sp_addmessage
  • sp_configure och RECONFIGURE. ALTER DATABASE SCOPED CONFIGURATION stöds.
  • sp_helpuser
  • sp_migrate_user_to_contained
  • SQL Server-agent: Syntax som förlitar sig på SQL Server-agenten msdb eller databasen: aviseringar, operatorer, centrala hanteringsservrar. Använd skript, till exempel PowerShell, i stället.
  • SQL Server-granskning: Använd SQL Database-granskning i stället.
  • SQL Server-spårning.
  • Spåra flaggor.
  • T-SQL-felsökning.
  • Utlösare för serveromfång eller inloggning.
  • USE instruktion: Om du vill ändra databaskontexten till en annan databas måste du skapa en ny anslutning till databasen.

Fullständig T-SQL-referens

Mer information om T-SQL-grammatik, användning och exempel finns i T-SQL-referens (databasmotor).

Om "Gäller för"-taggar

T-SQL-referensen innehåller artiklar som rör alla de senaste SQL Server-versionerna. Under artikelrubriken finns ett ikonfält som visar MSSQL-plattformar och anger tillämplighet. Till exempel introducerades tillgänglighetsgrupper i SQL Server 2012. Artikeln SKAPA TILLGÄNGLIGHETSGRUPP anger att -instruktionen gäller för SQL Server (från och med 2012). Instruktionen gäller inte för SQL Server 2008, SQL Server 2008 R2, Azure SQL Database, Azure Azure Synapse Analytics eller Parallel Data Warehouse.

I vissa fall kan det allmänna ämnet för en artikel användas i en produkt, men det finns mindre skillnader mellan produkter. Skillnaderna anges i mitten av artikeln efter behov. Artikeln är till exempel CREATE TRIGGER tillgänglig i SQL Database. Men alternativet ALL SERVER för utlösare på servernivå anger att utlösare på servernivå inte kan användas i SQL Database. Använd utlösare på databasnivå i stället.

Nästa steg

En lista över de funktioner som stöds och inte stöds av SQL Database finns i Funktionsjämförelse i Azure SQL Database.

Om du vill identifiera kompatibilitetsproblem i dina SQL Server-databaser innan du migrerar till Azure SQL Database och migrera dina databaser använder du Data Migration Assistant (DMA).