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
ochALTER 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
ochALTER TABLE
harFILETABLE
ochFILESTREAM
alternativ som inte kan användas i SQL Database eftersom dessa funktioner inte stöds. CREATE LOGIN
ochALTER 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ändEXECUTE 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
,OPENDATASOURCE
och 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
,REVOKE
ochDENY
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
ochRECONFIGURE
. 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).