T-SQL skillnader mellan SQL Server och Azure SQL Database

När du migrerar databasen 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 ny teknik är nödvändig. Om du vill identifiera inkompatibiliteter och migrera databaser till Azure SQL Database, använder du Data Migration Assistant (DMA).

Översikt

De flesta T-SQL-funktioner som program använder stöds fullt ut i både Microsoft SQL Server och Azure SQL Database. Kärnkomponenterna för SQL till exempel datatyper, operatorer, strängfunktioner, aritmetiska, logiska och markörfunktioner fungerar identiskt i SQL Server och SQL Database. Det finns dock några T-SQL-skillnader i elementen DDL (datadefinitionsspråk) och DML (datamanipuleringsspråk), vilket 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 på systemdatabaserna och operativsystemet. Därför stöds de flesta funktioner på instansnivå inte i SQL Database. T-SQL instruktioner och alternativ är inte tillgängliga om de konfigurerar alternativ på instansnivå, operativsystemkomponenter eller anger konfiguration av filsystem. 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 inbyggt i Azure SQL Database. T-SQL som rör tillgänglighetsgrupper stöds inte av SQL Database och dynamiska hanteringsvyer relaterade till Always On-tillgänglighetsgrupper stöds inte heller.

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

T-SQL syntaxuttryck med partiella skillnader

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

  • I SQL Server- CREATE DATABASE och ALTER DATABASE -instruktioner över tre dussin alternativ. Isatserna innehåller alternativ för filplacering, FILESTREAM och service broker som endast gäller för SQL Server. Det spelar kanske ingen 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 DATABASEför Azure SQL Database också tjänstmål och elastisk pool-alternativ som endast gäller för SQL Database.
    • CREATE TABLE och ALTER TABLE FILETABLE -isatserna har - och FILESTREAM -alternativ som inte kan användas SQL Database eftersom dessa funktioner inte stöds.
  • CREATE LOGIN- ALTER LOGIN och -instruktioner stöds, men erbjuder inte alla tillgängliga alternativ i SQL Server. Om du vill göra databasen mer portabel SQL Database du använda inneslutna databasanvändare i stället för inloggningar när det är möjligt. Mer information finns i CREATE LOGIN and ALTER LOGIN (SKAPA INLOGGNING) och ALTER LOGIN (ÄNDRA INLOGGNING) och Manage logins and users (Hantera inloggningar och användare).

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

Förutom T-SQL-instruktioner relaterade till funktioner som inte stöds som beskrivs i Azure SQL Databasefunktionsjämförelse 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 omkompilera programmet för att eliminera dessa T-SQL funktioner och instruktioner.

  • Sortering av systemobjekt.
  • Anslutningsrelaterad: Slutpunktsutdrag. SQL Database stöder inte Windows autentisering, men stöder Azure Active Directory autentisering. Detta inkluderar autentisering av Active Directory-huvudnamn som är federerade med Azure Active Directory. Mer information finns i Ansluta till SQL Database Eller Azure Azure Synapse Analytics med hjälp av Azure Active Directory autentisering.
  • Frågor mellan databaser och instanser med hjälp av 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.
  • Länkning av ägarskap mellan databaser och TRUSTWORTHY databasegenskapen.
  • EXECUTE AS LOGIN. Använd EXECUTE AS USER i stället.
  • Utökningsbar nyckelhantering (EKM) för krypteringsnycklar. transparent datakryptering (TDE) kund-hanterade nycklar Always Encrypted huvudnycklar för kolumner kan lagras i Azure Key Vault.
  • Händelse: händelsemeddelanden, frågemeddelanden.
  • Filegenskaper: Syntax som är relaterad till databasens filnamn, 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, Alltid på, 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 som rör serverminne, arbetstrådar, CPU-tillhörighet, spårningsflaggor. Använd tjänstnivåer och beräkningsstorlekar i stället.
  • KILL STATS JOB.
  • OPENQUERYnamnen OPENDATASOURCE , och i fyra delar.
  • .NET Framework: CLR-integrering
  • Semantisk sökning
  • Serverautentiseringsuppgifter: Använd databasomfångsautentiseringsuppgifter i stället.
  • Behörigheter på servernivå: GRANT , och för behörigheter på REVOKE DENY 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 Agent eller MSDB-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.
  • Serveromfångsutlösare eller inloggningsutlösare.
  • 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 Reference (Database Engine).

Om "Gäller för"-taggar

T-SQL-referensen innehåller artiklar som är relaterade till alla SQL Server senaste versionerna. Under artikelrubriken finns ett ikonfält med en lista över MSSQL-plattformar och som anger tillämplighet. Till exempel introducerades tillgänglighetsgrupper i SQL Server 2012. Artikeln CREATE AVAILABILITY GROUP (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 vid mittpunkter i artikeln efter behov. Artikeln är till CREATE TRIGGER exempel tillgänglig i SQL Database. Men ALL SERVER alternativet 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 som inte stöds av SQL Database finns i Azure SQL Database jämförelse av funktioner.

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