Azure SQL Database – Probleme beim Löschen von Recovery Service Vault

Ich möchte euch heute von einer Erfahrung berichten, welche ich in den letzten Tagen mehrfach und wiederholt machen musste. Für meine Sessions bei der Imagine Cloud Conference und dem PASS Camp über Azure SQL Databases hatte ich einen Azure Recovery Service Vault angelegt, um dort die Backups für die Langzeit-Archivierung abzulegen. Nachdem die Sessions beendet waren, wollte ich aufräumen bzw für die nächste Session vorbereiten, hierzu wollte ich die ganze Ressource-Gruppe löschen (samt SQL Server, Azure SQL Databases und dem besagten Recovery Service Vault). Egal was ich versucht habe, der Recovery Service Vault ließ sich nicht löschen, der SQL Server mit seinen SQL Databases konnte erfolgreich gelöscht werden, der ARS Vault aber blieb hartnäckig bestehen… Die Fehlermeldung lautete sinngemäß, dass noch registrierte Server / Items vorhanden sind (Please delete any replicated items, registered servers, Hyper-V sites…), welche erst gelöscht werden müssen. In der Service-Übersicht war allerdings nichts hierzu zu finden, keine registrierten Server, keine registrierten Server oder Replicated Items, keine Größen… es konnte nichts gefunden werden, was darauf hindeutete wo sich noch etwas verbirgt.

fast verzweifelt - verzweifelte Suche - StockSnap_27XHUPB48N - aus dem Newsletter von StockSnap

Verzweiflung breitet sich aus

Wie kann ich also nun diesen Azure Recovery Service Vault wieder löschen? Wenn es sich wenigstens um eine generische Ressourcengruppe handeln würde, aber da ich zur Abgrenzung der einzelnen Veranstaltungen bzw der Einfachheit halber alle Ressourcen einer Demo in einer Ressourcengruppe anlege, damit ich sie schneller löschen kann… hätte ich den ARS Vault entweder gerne verschoben oder eben doch ganz gelöscht… (siehe Beitragsbild ganz oben)

Folgende Fehlermeldung habe ich wiederholt bekommen:

Deletion of ARS Vault failed - Error Message

Vault cannot be deleted as there are existing resources within the vault. Please ensure there are no backup items, protected servers or backup management servers associated with this vault. Unregister the following containers associated with this vault before proceeding for deletion : Unregister all containers from the vault and then retry to delete vault

Bei der Kontrolle des Azure Recovery Services, welche Server oder Backup Items noch in dem ASR-Vault konfiguriert sind, schaute ich natürlich als erste in den entsprechenden Service nach… aber egal welche Ansicht ich auch öffnete, ich konnte keinerlei verbliebenen Backups finden.

Deletion of ARS Vault failed - Backup Details on ARS

 

Also erst einmal eine Runde googlen ob jemand anderes dieses Problem schon einmal gehabt hat… und siehe da, so ganz unbekannt ist das Problem mit dem Löschen des Azure Recovery Services nach der Nutzung mit Azure SQL Databases nicht. Felipe de Assis hatte hierzu bereits einen kleinen Beitrag und ein Skript geschrieben => https://social.msdn.microsoft.com/ Der eigentliche Grund liegt darin, dass weder Azure SQL VM Server noch Azure SQL Databases dort als aktiv gelistet werden und diese explizit mittels Powershell zu löschen sind. Ich habe das Skript nach meinen Anpassungen hier unten angehängt, so dass ihr seht was ich meine…

Login-AureRmAccount

$vault = Get-AzureRmRecoveryServicesVault -Name "WingtipDB-LongTime"
Set-AzureRmRecoveryServicesVaultContext -Vault $vault

$containers = Get-AzureRmRecoveryServicesBackupContainer -ContainerType AzureSQL -FriendlyName $vault.Name
ForEach ($container in $containers) {
 $items = Get-AzureRmRecoveryServicesBackupItem -container $container -WorkloadType AzureSQLDatabase
 ForEach ($item in $items) {
 Disable-AzureRmRecoveryServicesBackupProtection -item $item -RemoveRecoveryPoints -ea SilentlyContinue
 }
 Unregister-AzureRmRecoveryServicesBackupContainer -Container $container
}
Remove-AzureRmRecoveryServicesVault -Vault $vault

Damit ließ sich auch der Recovery Service Vault einwandfrei löschen und dann auch die Ressourcegruppe und ich hatte wieder eine saubere Test- bzw Demo-Umgebung.

TSQL Tuesday #96: Community Menschen die meinen Weg beeinflusst haben

TSQL Tuesday #96: Menschen die meinen Weg beeinflusst haben

T-SQL Tuesday ist eine wiederkehrende Blog-Serie, die von Adam Machanic (b | t) gestartet wurde, jeden Monat ist ein Blogger Gastgeber für ein Thema rund um den SQL Server und jeder kann einen Blogbeitrag zu diesem bestimmten Thema schreiben. Diesen Monat ist Ewald Cress‏ (blog | twitter) unser Gastgeber und es geht um die Menschen, die uns in unserem Leben mit den Daten in der Community beeinflusst haben.

Ich habe lange Zeit keinen Bezug zu einer Community gehabt, in meiner Jugend war ich ehrenamtlich beim Deutschen Roten Kreuz und jetzt wieder mit „euch“ unterwegs.

Wer hat mich in den letzten Jahren beeinflusst?

Eigentlich fing alles mit dem PASSCAMP  2013 an… Ok, vielleicht schon etwas früher, als ich mich Mitte 2012 bei Twitter anmeldete und viel von einer #sqlfamily las.

Hier gilt es auf jeden Fall Brent Ozar zu erwähnen, der mich mit seinem Wissen und Blogbeiträge schon seit Jahren inspiriert und im täglichen DBA-Leben weiter bringt. Auch seine Beiträge zum Thema „Warum sollte ich einen Blog betreiben?“ zählen zu meinen immer wieder genannten Gründen. Leider habe ich ihn noch nicht persönlich treffen können, aber das kommt garantiert noch. Seine lustige Art und Weise komplizierte Dinge einem verständlich zu erklären ist einfach großartig!

Dann in 2013 war es mein Besuch beim PASSCamp und somit mein erster direkter Kontakt mit der deutschen sqlfamily aka SQLPass. Hier kann man nur die üblichen Verdächtigen aufzählen, die eigentlich immer auf solchen Veranstaltungen anwesend sind. => Oliver Engels, Tillmann Eitelberg, Kostja Klein, Niko Neugebauer und Andreas Wolter, um nur einige zu nennen… Ich fand deren Gruppendynamik genial und das ganze Miteinander… jeder kennt jeden, jeder lacht mit jedem und jeder redet mit jedem, keiner wird ausgegrenzt!

Da wollte ich mitmachen, irgendwie dazugehören… aber wie???

Henning L. @hlhr_dev Jun 2 thanks to all the speakers and specially to @sql_williamd for this great event #SQLGrillen

Also begann ich nach dieser Erfahrung mich mehr mit der PASS und deren Aktivitäten zu beschäftigen und fand unter anderem Cathrine Wilhelmsen, deren Community-Aktivitäten mich ebenfalls anspornten und aufzeigten, was ich wie anfangen muss => mehr Teilnahmen an lokalen bzw nationalen Aktivitäten der PASS. Dann kam das SQLGrillen von William Durkin und die Session von Andre Kamann über PoSh meets Ola Hallengren und das Zusammentreffen mit Andre Essing, welche mich dazu motivierte selber über meinen Schatten zu springen und als Sprecher in der PASS aufzutreten. Bei den folgenden zwei SQLSaturdays (Rheinland und München 2016) war ich dann erstmalig als Volunteer unterwegs und konnte so in die nationalen Aktivitäten der PASS Deutschland hinein schnuppern. Wie es der Zufall wollte oder das Netzwerk die Kugeln rollte, war der SQLSaturday in München der nächste Baustein in meiner „Community-Karriere“ und bescherte mir das Azure Meetup Hamburg.

In 2017 kamen dann die ersten öffentlichen Talks dazu, mal Firmenintern, mal in der PASS-RGV Hamburg, beim SQLGrillen 2017 (DANKE William) und gleich doppelt beim SQLSaturday Rheinland 2017 (Dank an Olli, Tillmann und Kostja)… all das in Verbindung mit meinen Blog- und Twitter-Aktivitäten sorgte dann dafür dass Microsoft mich mit dem MVP-Award auszeichnete.

Ich möchte auf diesem Wege also folgenden Menschen der #sqlfamily meinen Dank aussprechen:

Oliver Engels
Tillmann Eitelberg
Kostja Klein
Andre Essing
William Durkin
Andre Kamann

Ein besonderer Dank geht an Gabi Münster für die Unterstützung bei meinem ersten „großen“ öffentlichen Auftritt, im Endeffekt geht/ging es um den „Arschtritt“ um über meinen Schatten zu springen. Natürlich halfen auch viele Gespräche und Twitterkontakte mit zahlreichen anderen Community-Mitgliedern (Chrissy, Claudio, Rob, Dirk, Volker und vor allem immer wieder Conny!), um mich nun als Mitglied (zumindest der deutschen) SQLFamilie zu fühlen! VIELEN DANK! Weitere Ziele sind geplant für 2018 😉

Ein ganz besonderer Dank geht an meinen Team-Lead Thorsten Moeller, der mich immer wieder bei meinen Aktivitäten unterstützt und ein noch viel größerer Dank gilt meiner Frau, die diese Aktivitäten ebenfalls unterstützt und mir immer „den Rücken frei hält“!

PASSCamp 2017 – spannende Agenda in allen Tracks

Seit dem Wochenende gibt es endlich einen offiziellen Zeitplan (siehe PASS Newsletter) für das diesjährige PASSCamp in Seeheim – veranstaltet von der PASS Deutschland e.V., den ich euch hier nicht vorenthalten möchte. Das diesjährige PASSCamp steht ganz unter dem Motto „Aufgeschlaut du werden wirst!“, denn auf keiner deutschen Veranstaltung ist die Dichte der Microsoft Mitarbeiter, Microsoft MVPs und Matter Experts zum Thema Dataplatform höher als auf dem PASSCamp. Diese Jahr geht es um die „Hype“-Themen wie MSSQL Operation Studio, den neuen PowerBI Report Server oder Azure Machine Learning.

Montag 04.12.2017
Start Stop Time Session DBA DEV BI InformationServices
18:00 20:00 02:00 Kick of session Microsoft Team: Microsoft Data Platform Next Version: The Strategy Session
20:00 Dinner seeheim´s eat & meet

 

Dienstag 05.12.2017
Start Stop Time Session DBA DEV BI InformationServices
08:00 Breakfast
09:00 09:45 00:45 Get-Ready & Opening Session Housekeeping & Organisation Kick Off
09:45 10:00 Splitting into groups
10:00 12:00 02:00 Session 1 WD/AK/RS: A day with Cloud DBAs on Query Store, PowerShell and more CK: Cosmos DB & Azure Functions WS: Power BI Report Server & Premium OE/TE: – Data Quality mit AZ ML Workbench und ADLA
12:00 13:30 Lunch
13:30 14:45 01:15 Session 2 WD/AK/RS: A day with Cloud DBAs on Query Store, PowerShell and more CK: Cosmos DB & Azure Functions WS: Power BI Report Server & Premium OE/TE: – Data Quality mit AZ ML Workbench und ADLA
14:45 15:00 Break
15:00 16:15 01:15 Session 3 WD/AK: PowerShell for DBAs CS: Block Chain 2.0 VH/FG: Power BI Update 2017 SD: Machine Learning mit AZ ML Workbench
16:15 16:30 Pause & Snack im Foyer
16:30 17:30  01:00 Session 4 WD/AK: PowerShell for DBAs CS: Block Chain 2.0 VH/FG: Power BI Update 2017 SD: Machine Learning mit AZ ML Workbench
18:00 18:30 Welcome reception & Late Session Rob’s Beer & Chips & PowerShell Session
20:00 Dinner seeheim´s eat & meet

 

Mittwoch 06.12.2017
Start Stop Time Session DBA DEV BI InformationServices
08:00 Breakfast
09:00 10:15 1:15 Session 5 BP: SQL Azure DB & Managed Instance BK: IoT Development Full Day TM: R for Business Intelligence Freaks OE/TE/WS: SSIS vNext (Scaleout & Everest)
10:15 10:30 Break
10:30 12:00 1:30 Session 6 BP: SQL Azure DB & Managed Instance BK: IoT Development Full Day TM: R for Business Intelligence Freaks OE/TE/WS: SSIS vNext (Scaleout & Everest)
12:00 13:30 Lunch
13:30 14:45 01:15 Session 7 UR: Multi-Server Administration Hands On BK: IoT Development Full Day IF: Power BI „M“ Deep Dive für BI Pros SK: Azure Data Factory Version 2
14:45 15:00 Break
15:00 16:15 01:15 Session 8 UR: Multi-Server Administration Hands On BK: IoT Development Full Day IF: Power BI „M“ Deep Dive für BI Pros SK: Azure Data Factory Version 2
16:15 16:30 Pause & Snack im Foyer
16:30 17:30  1:00 Session 9 WD/AK: PowerShell for DBAs BK: IoT Development Full Day IF: Power BI „M“ Deep Dive für BI Pros OE/TE: Azure Data Catalog & Common Data
Services
18:00 18:30 Late Session PH: Hybride Dataplatform: Erfahrungen, Anekdoten, Wissenswertes
20:00 Dinner seeheim´s eat & meet

 

Donnerstag 07.12.2017
Start Stop Time Session DBA DEV BI InformationServices
08:00 Breakfast
09:00 10:15 1:15 Session 10 FG: SQL Server Linux & Docker TM: Power BI Custom Visual Development MR: Power BI und IoT BW: BIML for ADF & Performance Evaluation
10:15 10:30 Break
10:30 12:00 1:30 Session 11 FG: SQL Server Linux & Docker TM: Power BI Custom Visual Development MR: Power BI und IoT BW: BIML for ADF & Performance Evaluation
12:00 13:30 Lunch
13:30 14:45 01:15 Session 12 NN: Cosmos DB for DBAs VH/FG: Power Embedding GM: Azure Analysis Services CK/MT:Die Cognitiven & Bots Datafreaks
14:45 15:00 Pause & Snack im Foyer
15:00 16:15 01:15 Session 13 NN: Cosmos DB for DBAs VH/FG: Power Embedding GM: Azure Analysis Services CK/MT:Die Cognitiven & Bots Datafreaks
16:15 16:30 Closing Session
16:30 Ende

Damon wünscht viel Spaß auf dem PASSCAMP 2017

Speaker-Zuordnung
AK: Andre Kamman (MVP) IF: Imke Feldmann (MVP) PH: Patrick Heyde (MS) WS: Wolfgang Strasser (MVP)
BK: Ben Kettner (MS pTSP) MR: Markus Raatz (MS pTSP) RK: Ralph Kemperdick (MS)
BW: Ben Weissman MT: Marcel Tilly (MS Research) RS: Rob Sewell (MVP)
BP: Björn Peters (MVP) MV: Martin Vach (MS) TE: Tillmann Eitelberg (MVP)
CK: Constantin Klein (MVP) NN: Niko Neugebauer (MVP) TM: Tom Martens
CS: Christoph Seck (MS pTSP) OE: Oliver Engels (MVP & MS pTSP) UR: Uwe Ricken (MVP)
FG: Frank Geisler (MVP & MS pTSP) SD: Sascha Dittmann (MS) VH: Volker Hinz (MS)
GM: Gabi Münster (MVP) SK: Steffan Kirner (MS pTSP) WD: William Durkin (MVP)

Das ist der aktuelle (vorläufige) Schedule des PASSCamp 2017 und kann sich wirklich sehen lassen, sagenhafte 12 MVPs sind vertreten und können euch den „heißen Scheiß“ näher bringen.

Anmelden könnt Ihr Euch wie immer: http://www.sqlpasscamp.de/anmeldung.html

PS: Ich selber habe mich immer geärgert, warum es kurz vor dem PASSCamp noch immer keine vollständiger Speaker-Liste und/oder Themenliste gab… ich habe mal nachgefragt… weil man den „real hot shit“ vom PASS Summit Anfang November abwarten möchte, damit auch alle frischen Themen, Keynotes und Announcements tatsächlich auf dem PASSCamp abgedeckt werden !!!

In einem Blogpost aus 2016 habe ich schon einmal ein Video vom PASSCamp 2015 verlinkt, damit ihr einen ersten Eindruck bekommt was euch dort erwartet.

short reminder to me or all ;-) – cannot connect to SSAS in a Cluster

Dieser Post gilt für mich als Reminder, um zukünftig diesen Fehler schneller beheben zu können, aber vielleicht hilft es ja auch anderen 😉
Ursprünglich sollte ich heute einer vorhandenen SQL Server Cluster-Instanz das Feature Analysis Services hinzufügen, was ja bekannterweise nicht geht (zumindest nicht nachträglich). Dann habe ich mit dem OS-Kollegen spontan eine neue Cluster-Ressource angelegt und dort eine eigenständige SQL Server Analysis Services Instanz installiert. Servicepack und letzte Patches drauf und noch schnell die User berechtigen… SSMS öffnen und mit der SSAS Instanz verbinden… aber was ist das? Eine Fehlermeldung…

Reminder - Short Note - How to resolve this SSAS Login Error

Nach ewig langem googlen, bin ich auf folgende Forumsseite gestossen, die mir wirklich weitergeholfen hat…
Also habe ich den SQL-Browser-Dienst umgestellt und die Port-Number des SSAS-Dienstes, den SQL Server Analysis Service neu gestartet und erneut den Verbindungsaufbau mittels SQL Server Management Studio versucht und siehe da, die Connection kam zu stande.

Achso, es handelte sich um einen Cluster mit SQL Server 2014.

 

Azure SQL Database – Lasttest der TempDB

Auf Facebook wurde ich gefragt, wie leistungsstark denn die „TempDB“ einer Azure SQL Database wäre bzw sehr man diese belasten könne… also was liegt näher als die „TempDB“ mit einem Lasttest zu verproben. Also habe ich über die Suchmaschine meines Vertrauens eine einfache und schnelle Möglichkeit gesucht, wie man explizit die „TempDB“ belasten kann. Bei SQLServerCentral bin ich dann fündig geworden => Load Generator for TempDB

CREATE PROC EXERCISE_TEMPDB_SILLY AS
   SET STATISTICS TIME ON
   SET STATISTICS IO ON

   CREATE TABLE #temp(RecNo INT PRIMARY KEY CLUSTERED, Data varchar(80))

   INSERT INTO #temp SELECT -1, CAST(NewID() AS varchar(80))

   DECLARE @cnt AS INT
   SET @cnt = 0

   WHILE @cnt > -1
   BEGIN
      Print 'Loop ' + CAST(@cnt AS VARCHAR(9))
      
      INSERT INTO #temp 
      SELECT RecNo-Power(2,@cnt) , Right(Data + CAST(NewID() AS varchar(80)), 80)
      FROM #temp

      SET @cnt = @cnt+1
   END

Mit dieser Stored Procedure wird eine temporäre Tabelle in der „TempDB“ erstellt und diese mit einfachen Werten befüllt, damit diese Werte nich „stupide“ Hochzählen werden diese mit Rechenoperationen manipuliert. Da diese While-Schleife keinen Exist hat, läuft dieser Insert-Befehl in einer Endlos-Schleife mit dem Ziel die Grenze der TempDB zu ermitteln, da sich die Anzahl der einzufügenden Datenzeilen mit jedem Loop erhöht. Ein Kommentar in dem Forumsbeitrag deutet darauf, dass der Verprober auf seinem SQL Server 21 Loops geschafft hat, was ein erster Anhaltspunkt ist. Meine Azure VM mit SQL Server 2016 (Standard DS12 v2 (4 vCPUs, 28 GB memory)) schafft innerhalb von 2 Minuten 23 Loops…

Azure SQL Database - Lasttest

 

Lasttest-Bedingungen

Meine erste Tests zeigten, dass die Anzahl der Loops tatsächlich in einem gewissen Bereich liegen bzw eine gewisse Zeit benötigen, daraus machte ich einen einheitlichen Test von 2 Minuten… heißt das ich nach 2 Minuten Laufzeit auf den „STOP“-Knopf drücke, um somit die Ausführung der Stored Procedure zu unterbrechen bzw abzubrechen. Nachdem der SQL Server die Ausführung beendet hat, habe ich die Anzahl der durchlaufenen Loops ermittelt.

Loop 1 ergab 1 Insert
Loop 2 ergab 2 Inserts
Loop 3 ergab 3 Inserts
Loop 4 ergab 8 Inserts
[…]
Loop 10 ergab 512 Inserts
Loop 11 ergab 1024 Inserts
Loop 12 ergab 2048 Inserts
[…]
Loop 18 ergab 131072 Inserts
[…]
Loop 20 ergab 524288 Inserts
Loop 21 ergab 1048576 Inserts
Loop 22 ergab 2097152 Inserts
Loop 23 ergab 4194304 Inserts
Loop 24 ergab 8388608 Inserts

Wie man sehen kann hat die Datenbank bzw die TempDB ganz schön viel Daten zu verarbeiten, was auf deren Leistungsfähigkeit schließen lässt. Dieser Test soll erst einmal nur einen Anhaltspunkt für die Belastungsgrenzen aufzeigen… Die kleineren Leistungsklassen der Azure SQL Databases haben bei diesem Lasttest gezeigt, dass sie nach einer gewissen Anzahl Insert bzw Loops einfach am Ende sind und nicht mehr oder nur noch bedingt in der Lage sind Daten zu verarbeiten/aufzunehmen. Überrascht war ich in den höheren Leistungsklassen wie schnell die Inserts erfolgten und diese konnten sicherlich noch mehr Daten aufnehmen, hätte ich die Laufzeit des Testes erweitert (was ich sicherlich zu einem späteren Zeitpunkt nochmal machen könnte).

Lasttest-Ergebnis-Vergleich

Leistungsklasse Anzahl Loops Anzahl Inserts
Azure SQL Database S0 18 131072
Azure SQL Database S1 18 131072
Azure SQL Database S3 22 2097152
Azure SQL Database S9 25 16777216
Azure SQL Database P1 23 4194304
Azure SQL Database P6 24 8388608
Azure SQL Database P15 24 8388608
Azure SQL Database PR1 23 4194304
Azure SQL Database PR6 24 8388608
Azure SQL Server
(Standard DS12 v2 (4 vCPUs, 28 GB memory))
24 8388608
Azure SQL Server
(Standard DS15 v2 (20 vCPUs, 140 GB memory))
24 8388608

Wie man an der Ergebnis-Tabelle erkennen kann, sind die Unterschiede zwischen den höheren Leistungsklassen und den bewährten SQL Servern nicht sonderlich groß bzw gar nicht vorhanden. Was entweder heißt, man kann die Azure SQL Databases genau so stark belasten wie einen herkömmlichen SQL Server oder aber sie erreichen genauso schnell ihre Limits. Mein persönlicher Eindruck ist eher, dass die höheren Klassen bei diesem Lasttest noch mehr leisten können, wenn man ihnen mehr Zeit gibt. Anders herum würde ich sagen, dass man die Azure SQL Databases ohne zu zögern und ohne Bedenken mit einem „normalen“ SQL Server mit SSDs vergleichen kann.

Azure SQL Database - Lasttest - TOP Ergebnis

Fazit des Lasttests

Aus aktueller Sicht würde ich jedem die Nutzung von Azure SQL Databases im Vergleich zu herkömmlichen SQL Servern empfehlen, sofern die Solution und das Umfeld/der Kunde dies ermöglichen.