T-SQL verschillen tussen SQL Server en Azure SQL Database
Wanneer u uw database migreert van SQL Server naar Azure SQL Database, ontdekt u mogelijk dat uw SQL Server-databases enige re engineering vereisen voordat ze kunnen worden gemigreerd. Dit artikel bevat richtlijnen om u te helpen bij het uitvoeren van deze re-engineering en het begrijpen van de onderliggende redenen waarom re-engineering nodig is. Gebruik Data Migration Assistant (DMA)om incompatibiliteit te detecteren en databases naar Azure SQL Database te migreren.
Overzicht
De meeste T-SQL-functies die toepassingen gebruiken, worden volledig ondersteund in Microsoft SQL Server en Azure SQL Database. De kernonderdelen van SQL zoals gegevenstypen, operators, tekenreeksen, rekenkundige, logische en cursorfuncties werken bijvoorbeeld op dezelfde manier in SQL Server en SQL Database. Er zijn echter enkele T-SQL-verschillen in DDL-elementen (gegevensdefinitietaal) en DML-elementen (taal voor gegevensmanipulatie), wat resulteert in T-SQL-instructies en -query's die slechts gedeeltelijk worden ondersteund (wat verder in dit artikel wordt 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. 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, besturingssysteemonderdelen of bestandssysteemconfiguratie configureren. 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 Always On-beschikbaarheidsgroepen worden ook niet ondersteund.
Zie voor een lijst met de functies die wel en niet worden ondersteund door SQL Database, Azure SQL Database functievergelijking. Deze pagina is een aanvulling op dat artikel en is gericht op T-SQL instructies.
T-SQL syntaxis-instructies met gedeeltelijke verschillen
De belangrijkste DDL-instructies zijn beschikbaar, maar uitbreidingen van DDL-instructies met betrekking tot niet-ondersteunde functies, zoals het plaatsen van bestanden op schijf, worden niet ondersteund.
- In SQL Server en
CREATE DATABASEALTER DATABASEhebben instructies meer dan 30 opties. De instructies omvatten opties voor bestandsplaatsing, FILESTREAM en service broker die alleen van toepassing zijn op SQL Server. Dit maakt mogelijk niet uit of u databases maakt in SQL Database voordat u migreert, maar als u T-SQL-code migreert die databases maakt, moet u CREATE DATABASE (Azure SQL Database) vergelijken met de SQL Server-syntaxis in CREATE DATABASE (SQL Server T-SQL) om ervoor te zorgen dat alle opties die u gebruikt, worden ondersteund.CREATE DATABASEvoor Azure SQL Database ook opties voor servicedoelstelling en elastische pool die alleen van toepassing zijn op SQL Database. - De instructies en hebben - en -opties die niet kunnen worden gebruikt op SQL Database omdat deze
CREATE TABLEALTER TABLEfuncties niet wordenFILETABLEFILESTREAMondersteund. CREATE LOGIN-ALTER LOGINen -instructies worden ondersteund, maar bieden niet alle opties die beschikbaar zijn in SQL Server. Om uw database draagbaarder te maken, SQL Database waar mogelijk het gebruik van ingesloten databasegebruikers in plaats van aanmeldingen. Zie CREATE LOGIN en ALTER LOGIN en 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 gebruik maakt van een van de volgende functies, moet u uw toepassing opnieuw engineeren om deze T-SQL functies en instructies te elimineren.
- Sorteren van systeemobjecten.
- Verbindingsgerelateerde: Eindpunt instructies. SQL Database biedt geen ondersteuning voor Windows verificatie, maar ondersteunt wel Azure Active Directory verificatie. Dit omvat verificatie van Active Directory-principals die zijn ge federeerd 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 instanties met drie of vier namen. Namen van drie gedeelten die verwijzen naar
tempdbde database en de huidige database worden ondersteund. Elastische query ondersteunt alleen-lezen verwijzingen naar tabellen in andere MSSQL-databases. - Keten van database-eigendom en de
TRUSTWORTHYdatabase-eigenschap. EXECUTE AS LOGIN. Gebruik in plaats daarvanEXECUTE AS USER.- Extensible key management (EKM) voor versleutelingssleutels. Transparent Data Encryption (TDE) door de klant beheerde sleutels en Always Encrypted kolommastersleutels 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, herstel, Always On, 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 gerelateerd aan servergeheugen, werkthreads, CPU-affiniteit, traceervlaggen. 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 binnen databasebereik.
- Machtigingen op serverniveau:
GRANTREVOKE, en vanDENYmachtigingen 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_TRANSACTIONSSHUTDOWNsp_addmessagesp_configureenRECONFIGURE. ALTER DATABASE SCOPED CONFIGURATION wordt ondersteund.sp_helpusersp_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 scripts, zoals PowerShell.
- SQL Server audit: gebruik SQL Database controle.
- SQL Server trace.
- Traceermarkeringen.
- T-SQL voor debuggen.
- Triggers voor serverbereik of aanmelding.
USEinstructie: als u de databasecontext wilt wijzigen in een andere database, moet u een nieuwe verbinding met die database maken.
Volledige naslag voor T-SQL
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 bevat artikelen met betrekking tot alle recente SQL Server versies. Onder de titel van het artikel vindt u een pictogrambalk met een lijst met MSSQL-platforms en een vermelding van de toepasbaarheid. Beschikbaarheidsgroepen zijn bijvoorbeeld geïntroduceerd in SQL Server 2012. Het artikel BESCHIKBAARHEIDSGROEP MAKEN 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 waar nodig aangegeven op de punten in het artikel. Het artikel is CREATE TRIGGER bijvoorbeeld beschikbaar in SQL Database. Maar de optie voor triggers op serverniveau geeft aan dat triggers op serverniveau niet kunnen worden ALL SERVER gebruikt in SQL Database. Gebruik in plaats daarvan triggers op databaseniveau.
Volgende stappen
Zie voor een lijst met de functies die wel en niet worden ondersteund door SQL Database, Azure SQL Database functievergelijking.
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.