SQL Data Sync is een krachtige Azure-service die beheerders in staat stelt bidirectionele synchronisatierelaties te creëren tussen SQL-databases en SQL Server-installaties. Deze synchronisatie vindt plaats via een hub-and-spoke-topologie, waarbij twee of meer SQL-databases deel uitmaken van een synchronisatiegroep. Binnen deze structuur fungeert één SQL-database als de hub-database, terwijl de andere databases leden van de groep zijn. Het synchronisatieverkeer beweegt zich uitsluitend tussen de hub en de leden. Naast de databases die deelnemen aan de synchronisatiegroep, is er ook een zogenaamde synchronisatiemetadata-database die de metadata en logboeken voor het Data Sync-proces bevat.

Met SQL Data Sync kunnen beheerders hybride applicaties ondersteunen door een on-premises SQL Server-database te synchroniseren met een Azure SQL Database-installatie. Dit biedt een waardevolle mogelijkheid om de voordelen van de cloud te combineren met de controle en beschikbaarheid van lokale infrastructuur. Een ander veelgebruikte toepassing is het creëren van gesynchroniseerde kopieën van een database om de belasting te verdelen: terwijl één kopie de inkomende query's afhandelt, kan een andere kopie worden gebruikt voor data-analyse en rapportage.

Om SQL Data Sync op te zetten, opent een beheerder een bestaande SQL Database-installatie in het Azure-portaal. Van daaruit kan de optie "Sync to other databases" in het menu Data Management worden geselecteerd. De beheerder kan vervolgens een nieuwe synchronisatiegroep aanmaken door op de knop "+New sync group" te klikken. Na het aanmaken van de synchronisatiegroep kunnen andere databases als leden worden toegevoegd. Dit kunnen databases uit andere Azure SQL Database-installaties zijn, maar ook on-premises databases die draaien op SQL Server. Het is echter belangrijk op te merken dat voordat een on-premises SQL Server-database lid kan worden van de synchronisatiegroep, de Azure SQL Data Sync Agent eerst op de server moet worden geïnstalleerd. Deze agent maakt de verbinding met de hub-database in de cloud mogelijk, zodat de on-premises database kan worden toegevoegd aan de synchronisatiegroep.

SQL Data Sync ondersteunt echter alleen databases die draaien op Azure SQL Database en SQL Server. Azure SQL Managed Instance wordt niet ondersteund, wat van belang is voor beheerders die overwegen een dergelijke configuratie te gebruiken. Wanneer de leden eenmaal zijn toegevoegd, kunnen beheerders specifieke tabellen selecteren voor synchronisatie via de pagina van de synchronisatiegroep. Zodra de configuratie van SQL Data Sync is voltooid, kan de beheerder de synchronisatie handmatig activeren via de pagina van de synchronisatiegroep, of deze plannen op specifieke tijdstippen.

Bij de migratie naar Azure zijn er verschillende hulpmiddelen beschikbaar die beheerders helpen om on-premises SQL-databases naar de Azure-cloud te verplaatsen. Het proces begint met toegang tot het Azure-portaal, waar het "Create a resource"-icoon een lijst van Azure-services en Marketplace-producten biedt. Onder de Migratie-categorie kunnen beheerders toegang krijgen tot de Azure Data Migration Service en Azure Migrate-tools, die eerder in dit hoofdstuk werden besproken.

Als een organisatie SQL-databases tussen Azure-services wil migreren, zijn er verschillende manieren om dit te doen. Dit hangt af van de specifieke diensten en de hoeveelheid gegevens die betrokken zijn. Wanneer bijvoorbeeld een virtuele machine (VM) die SQL Server draait in Azure wordt gemigreerd naar een PaaS-installatie, kunnen dezelfde tools worden gebruikt als bij de migratie van on-premises SQL Server-databases naar de cloud. Azure Database Migration Services of Azure Migrate kunnen ook in dit geval worden ingezet. Bij het migreren van databases van de ene Azure SQL Database-installatie naar de andere, bijvoorbeeld voor failover-doeleinden, kunnen beheerders de SQL Server Import and Export Wizard gebruiken om de gegevens te exporteren naar een andere SQL Database-installatie.

Naast deze migratietechnieken moeten beheerders ook rekening houden met de compatibiliteitsniveaus van de betrokken SQL-producten, de benodigde middelen voor de databases, en de vraag of de organisatie bereid is om de nodige downtime voor een offline migratie te accepteren. In scenario's waar minimale downtime essentieel is, bieden hybride oplossingen zoals SQL Data Sync de mogelijkheid om de migratie geleidelijk en zonder onderbrekingen uit te voeren.

Een belangrijk punt dat niet over het hoofd gezien moet worden bij de implementatie van SQL Data Sync is de noodzaak om de infrastructuur zorgvuldig af te stemmen op de specifieke gebruikssituaties. Dit betekent dat het belangrijk is om te begrijpen welke databases en applicaties precies baat hebben bij de synchronisatie, en hoe de synchronisatie de algehele prestaties van het systeem kan beïnvloeden. In een omgeving waarin verschillende versies van SQL Server en Azure SQL Database naast elkaar bestaan, moeten beheerders er ook voor zorgen dat de migratietechnieken compatibel zijn met de gebruikte versies en dat de juiste middelen beschikbaar zijn om een vlotte overgang te waarborgen.

Hoe SQL Server en Azure SQL Database permissies beheren: Rollen, rechten en configuraties

In zowel SQL Server als Azure SQL Database speelt de configuratie van rollen en permissies een cruciale rol in de manier waarop toegang wordt verleend tot verschillende resources. De toekenning van rechten bepaalt wie er toegang heeft tot welke gegevens, objecten of functies binnen een database. Dit systeem is niet alleen essentieel voor het handhaven van de beveiliging, maar ook voor het beheren van de functionaliteit van een databaseomgeving.

SQL Server heeft vooraf gedefinieerde serverrollen die gebruikers specifieke bevoegdheden geven om acties uit te voeren binnen de serveromgeving. Zo heeft de sysadmin rol volledige toegang tot alle serveractiviteiten, terwijl serveradmin gebruikers toegang biedt tot serverconfiguraties. De securityadmin rol is bedoeld voor gebruikers die verantwoordelijk zijn voor het beheren van serverlogins en hun eigenschappen. Processadmin biedt de mogelijkheid om processen in SQL Server te beëindigen, en setupadmin geeft toegang tot het toevoegen en verwijderen van gekoppelde servers. Andere rollen zoals bulkadmin, diskadmin en dbcreator verlenen toegang tot specifieke beheeracties zoals bulk-invoegingen, het beheren van back-upapparaten en het creëren of wijzigen van databases.

Er is echter ook de public rol, die de standaardrol is en aanvankelijk geen permissies heeft. Alle serverlogins worden automatisch aan deze rol toegevoegd, hoewel beheerders hier permissies aan kunnen toevoegen of verwijderen.

Het systeem in Azure SQL Database is iets anders, omdat deze geen traditionele serverstructuur kent zoals SQL Server of SQL Managed Instance. In Azure SQL Database is er enkel een logisch serverconcept. Twee serverrollen in Azure SQL Database zijn dbmanager en loginmanager. De dbmanager rol maakt het mogelijk voor gebruikers om nieuwe databases te creëren, terwijl loginmanager de mogelijkheid biedt om nieuwe logins te maken op serverniveau. Dit verschil benadrukt de beperkte serverstructuur in Azure SQL Database in vergelijking met de meer uitgebreide serverconfiguratie van SQL Server.

De basis permissies in een database zijn essentieel voor toegang en beheer van data. Vier hoofdpermissies worden ondersteund: SELECT (om gegevens te bekijken), INSERT (om gegevens toe te voegen), UPDATE (om gegevens te wijzigen) en DELETE (om gegevens te verwijderen). Naast deze basistoegangen biedt SQL Server en Azure SQL Database andere specifieke permissies, zoals CONTROL, dat volledige rechten verleent, REFERENCES voor het raadplegen van vreemde sleutels, en TAKE OWNERSHIP om eigendom van een object over te nemen. Verder bieden de functies en procedures van de database extra permissies zoals ALTER, EXECUTE en VIEW DEFINITION voor het wijzigen, uitvoeren en bekijken van objectdefinities.

Beheerders kunnen permissies toekennen, intrekken of weigeren aan logins, gebruikers en rollen via de GRANT, REVOKE en DENY commando's in T-SQL. Het verschil tussen REVOKE en DENY is belangrijk: REVOKE verwijdert een toegestane permissie, maar DENY voorkomt specifiek dat een gebruiker toegang krijgt, zelfs als diezelfde permissie elders is toegewezen. Dit laatste betekent dat de DENY regel altijd voorrang heeft boven een toegekende GRANT.

De configuratie van permissies kan via T-SQL commando's of via de grafische interface van SQL Server Management Studio (SSMS). In SSMS kunnen beheerders via een gebruikersvriendelijke interface rechten toekennen, intrekken of weigeren door eenvoudigweg vakjes aan te vinken of te verwijderen. Dit maakt het beheer van gebruikers en rollen gemakkelijker, vooral in omgevingen waar veel gebruikers of complexe databasestructuren aanwezig zijn.

Het is essentieel dat beheerders zich bewust zijn van de implicaties van het gebruik van DENY en REVOKE. In omgevingen waar meerdere bronnen betrokken zijn, kunnen conflicten tussen verschillende permissies optreden. Bij zo'n conflict heeft de DENY permissie altijd voorrang boven de GRANT permissie. De effectieve permissies van een gebruiker reflecteren altijd de gecombineerde invloed van alle toegewezen permissies, of ze nu direct of via rollen worden toegewezen.

Daarnaast moet men ook begrijpen dat permissies niet alleen betrekking hebben op data, maar ook op andere objecten binnen de database, zoals tabellen, views en opgeslagen procedures. Het beheer van deze objecten vereist een gedetailleerde configuratie van toegangsrechten en een goed begrip van hoe permissies elkaar beïnvloeden in een complexe omgeving.