SQL – Datum, Format() und Convert()

Womit kann man jeden Programmierer zum
Weinen bringen? Richtig: wenn es ums Datum geht. In SQL ist d [Mehr]

SCCM 2012 R2: Wie man den Configuration Manager installiert

Ich habe euch ein Video erstellt, in dem ihr sehen könnt wie ihr: die Voraussetzungen für eine SCCM-Installation (inklusive SQL-Server) schafft und den System Center Configuration Manager 2012 R2 installiert. Das Ganze zeige ich am Beispiel einer Single-Server-Lösung für eine Stand-alone Primary Site, lässt sich aber auf viele andere Szenarien übertragen.   Viel Spaß mit dem Video!

SCDPM meldet “Der Schutz kann nicht konfiguriert werden” wenn SQL Server gesichert werden soll

Bei der Version 2012 R2 des System Center Data Protection Managers gibt es ein Problem mit der Sicherung von SQL Servern der Version 2012. Es wird nach Erstellen der Schutzgruppe bzw. beim Versuch der Erstellung eines Replikates die Meldung “Der Schutz kann nicht konfiguriert werden” ausgegeben (Im Englischen: “Unable to configure protection”). (Leider hab ich vom Fehler selbst in der Produktiv-Umgebung keinen Screenshot gemacht und ich wollte ihn nicht nochmal nachträglich provozieren – daher ein Shot aus einer englischen Umgebung) Dieses Problem ist scheinbar bei Microsoft bekannt und auch im TechNet dokumentiert: https://technet.microsoft.com/de-de/library/dn281948.aspx Die Lösung ist auch recht einfach, da der Grund ebenso einfach ist: Der Schutz-Agent hat keine SA-Rechte auf der Datenbank, also müssen diese noch vergeben werden! Dazu startet man auf dem zu sichernden Zielserver einfach das “SQL Server Management Studio”: Dort kann man dann in dem Bereich “Sicherheit”, unter “Anmeldungen” das Konto von “NT-AUTORITÄT\SYSTEM” mit einem Rechtklick und der Auswahl von “Eigenschaften” öffnen. Hier muss dann die Rolle “sysadmin” zusätzlich mit ausgewählt werden. Danach sollte sich die Sicherung via DPM auch problemlos einrichten und durchführen lassen:

UnitTesting von T-SQL StoredProcedures

Die Sql Data Tools (SSDT) die ich bereits im Blog zum Refactoring gezeigt habe (Refactoring von Datenbanken)  bieten noch mehr Möglichkeiten um moderne Software Entwicklung auf T-SQL Code umzulegen. Um den Datenbankcode zu testen, finden wir im Visual Studio nun Unit Tests für Datenbankcode. Damit ist es möglich die Datenbankentwicklung so wie den restlichen Code, testgetrieben durchzuführen. Zunächst muss die Datenbank in ein Visual Studio Projekt importiert werden. Dieser Schritt ist im oben genannten Blog Eintrag beschrieben. Sobald eine Datenbank als Projekt vorliegt, kann im Visual Studio über den SQL Server Object Explorer im Ordner “Projects” darauf zugegriffen werden. Im Screenshot sind die Stored Procedures der Nordwind-Datenbank zu erkennen. Das Context-Menü einer SP bietet den Menü Punkt “Create Unit Tests….” Der folgende Dialog, legt ein neues Testprojekt zusätzlich zum bereits angelegten Datenbankprojekt an. Achtung: die voreingestellte Sprache des Testprojektes ist VB.NET. Sollte diese Sprache einem Leser des Blogs nicht gefallen, man kann sie auch auf C# ändern. (Wer mich kennt, weiß welche Sprache ich wähle) Als nächstes muss noch die Datenbank Verbindung für die Testläufe gesetzt werden. Entweder werden die Test mit einer bestehenden SQL Datenbank durchgeführt, oder das Projekt wird deployed und dieses als Testdatenbank herangezogen. Wichtig ist, dass als Server (localdb)\projects verwendet wird. die Angabe “.\projects” kann vom Visual Studio nicht aufgelöst werden. Im Testprojekt wird somit eine neue Testklasse erstellt, die von der Testumgebung des Visual Studios wie ein herkömmlicher UnitTest behandelt wird. Die Besonderheit ist der Editor für T-SQL Code in dem der Test formuliert wird. Der Test Editor besteht aus einem Editorfenster im oberen Teil und einem Bedingungenfenster im unteren Teil: Mit den Bedingungen kann der Output des Testcodes validiert werden und diese entscheiden über Erfolg und Misserfolg des Tests. Es gibt 8 Möglichkeiten das SQL Ergebnis zu validieren. Ich entscheide mit für einen simplen Testfall, wo die Anzahl der zurückgegebenen Zeilen 3 betragen soll. Dies wird als “Test Condition” hinterlegt: Über das Eigenschaften Fenster kann definiert werden, wieviele Zeilen in welchem Recordset erwartet werden. Der Testcode sieht so aus, daraus ergibt sich, dass die Zeilen im Recordset 1 sein sollten. -- database unit test for dbo.CustOrdersDetail DECLARE @RC AS INT, @OrderID AS INT;   SELECT @RC = 0, @OrderID = 10881;   EXECUTE @RC = [dbo].[CustOrdersDetail] @OrderID;   .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Wenn wir nun den Test laufen lassen kommt es zum erwarteten negativen Ergebnis: Das liegt daran, dass in der Datenbank, nachdem sie ausgeliefert wurde keine Daten enthalten sind. Dafür gibt es die Möglichkeit SQL Skripts zu hinterlegen die entweder vor jedem Test durchgeführt werden, oder einmal an Beginn eines Testlaufes für mehrere Tests ausgeführt werden. Die Attribute sind wohl von Unit Tests bekannt [TestInitialze] oder [ClassInitialize] Im Fall eines SQL Unit Tests sind die SQL Skripts über die DropDown Boxen im oberen Rand des Editorfensters zu setzen: Das Sql Skript bereitet die noch leere Datenbank soweit vor, dass der Test erfolgreich durchlaufen kann. In dem Fall wird eine Bestellung mit 3 Bestellzeilen eingetragen. Der mühsame Teil war, alle notwendigen Tabellen mit Demodaten zu befüllen. Das kann in einer kleinen Datenbank schon mal bedeuten 10 oder mehr Tabellen mit Daten zu versehen.  Der wichtigste Teil des Insert Codes: INSERT "Order Details" VALUES(10881,23,9,30,0.2) INSERT "Order Details" VALUES(10881,61,28.5,30,0.2) INSERT "Order Details" VALUES(10881,70,15,50,0.2) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Die restlichen Code zeilen, schicke ich gerne per Email. Da die Order Details Tabelle fast nur aus PK Felder besteht mussten auch noch Orders, Products, Categories, Suppliers, Customers und Employees angelegt werden zum Glück muss dieses Skript nicht all zu oft erstellt werden. Der Lohn der Arbeit ist nun ein erfolgreich laufender Unit Test für die Stored Procedure: und nun kann nach Herzenslust der Code der SP verbessert und verfeinert werden und wir können jederzeit unseren Code automatisiert testen.

Refactoring von Datenbanken

Refactoring von SourceCode ist mittlerweile weit verbreitet. Oft kommt es vor, dass sich die erste Bennenung von Variablen oder Funktionen als nicht ideal herausstellt. Dann beginnt das groß umbenennen im SourceCode. Zum Glück unterstützt das Visual Studio den Entwickler bei dieser Aufgabe. SQL Data Tools Seit Version 2010 des Visual Studio gibt es die Erweiterung “SQL Data Tools”.  Die SQL Data Tools (SSDT) können von der Microsoft Seite heruntergeladen werden (Link-MSDN) Mit Visual Studio 2013 erspart man sich den Download. Die SSDT ermöglichen Datenbankentwicklung im Team. D.h. mehrere Entwickler können gemeinsam an einem Datenbank Projekt arbeiten. Mehr dazu im Vortrag meinem Vortrag bei der VSONE (www.vsone.de) “Datenbankentwicklung im Team - Neue Möglichkeiten mit den SQL Data Tools” Ein weiteres nützliches Feature ist das Umbenennen der Datenbank Objekte. Oder wissen Sie immer genau in welchen Views oder Stored Procedures , ein Tabellenname oder ein Feldname im SQL Code verwendet wurde? Es ist gar nicht notwendig, das gesamte Datenbank Projekt in den SSDT entwickelt zu haben. Die SSDT können auch bei bestehenden Datenbank eingesetzt werden. Dazu muss zunächst die Datenbank importiert werden. Als erstes wird ein neues Datenbankprojekt begonnen. (FILE-NEW-SQL Server – SQL Server Database Project) Im nächsten Schritt wird die Datenbank importiert. “Projekt -Kontext Menu “- Import – Database Im folgenden Dialog noch die Datenbankverbindung angeben: Für jedes importierte Datenbank-Objekt wird in der Solution eine SQL Datei angelegt. Als Inhalt steht jeweils das passende Create-Statement. Nach dem Import der Contos-Demo Datenbank sieht der Solution Explorer folgendermaßen aus: Jede Tabelle und jeder View wird hier aufgelistet. Ein Schema, in diesem Fall “dbo” wird als Ordner der Solution Struktur angelegt. Der View “V_CUstomerOrders wird wie folgt definiert und angezeigt. Die DataTools bieten keinen Editor für View Darstellung. Daher ist die Darstellung der SQL Text: In dem View wird auf das Feld “YearlyIncome” der “Customer”-Tabelle verwiesen. Wenn nun die Aufgabe darin besteht in der Customer Tabelle das Feld umzubenennen, woher wissen Sie an welchen Stellen im SQL Text sie noch Änderungen vornehmen müssen? Zur Tabellen-Bearbeitung bieten sie SSDT sogar einen Editor. Dieser ist im Bildschirm zweigeteilt. Oben der Editor und im unteren Bereich der SQL Text. Änderungen können an beiden Stellen vorgenommen werden. Aber das Refactoring ist nur im SQL Text implementiert. Den Cursor auf das zu ändernde Feld stellen und im Kontext Menü “Refactor”  - “Rename” wählen. Im Rename-Dialog noch den neuen Namen (YearlyNetIncome] eingeben und optional bestimmen ob die Änderungen angezeigt werden sollen: Danach werden alle zu ändernden Stellen angezeigt. In meinem Fall sind die Views “V_CustomerPromotion, V_Customer, und V_CustomerOders zu ändern. Code der in StoreProcedures oder anderen Datenbank-Objekten enthalten ist, würde hier ebenfalls geändert werden.   Diese Code Änderungen wurden nun nur in den lokal gespeicherten SQL-Dateien durchgeführt- die Datenbank selbst ist noch nicht verändert. Über das Projekt Kontext Menü kann mit “Publish” die Datenbank am SQL Server selbst verändert werden. Die SSDT vergleichen hierzu die lokalen SQL Dateien mit der Struktur am Server und erstellen im Publish-Vorgang ein SQL Skript das die Update-Statements enthält um die Server Version an die lokale Version anzupassen. Fazit Endlich haben Objektnamen-Änderungen in Datenbank Projekten den Schrecken verloren

Schichtarbeit angesagt - SQL Profiler automatisch starten


Andreas Rauch

Jede Nacht das gleiche Problem. Der SQL Server ist langsam, die Anwendung strauchelt. Aber was ist das Problem? Das Montoring per Perfmon liefert zwar Spitzen, aber nicht den exakten Grund. Ein Fall für den Profiler! Die Aufgabe des Profiler ist Aktionen wie TSQL Statements, Aufruf von Prozeduren, Logins, ja im Prinzip sogar alles was am SQL Server passiert detailiert aufzuzeichnen. Ich kann gar nicht oft genug betonen, dass der Profiler extrem ressourcenhungrig ist und je nach Meinung auf dem Server oder eben nicht auf dem Server betrieben werden sollte. Aber defintiv sollte er über einen längeren Zeitraum nicht per Oberfläche gestartert werde. Ein LIvemitschnitt anzuzeigen ist performancetechnisch nahezu pervers!   AUFZEICHNUNG So nun zum automatisieren… Zuerst bauen wir uns alles zusammen, was man zum Aufzeichnen bzw Analysieren benötigt. Wichtig ist: Angange der Endzeit (sonst wird das Script später nie beendet Dateigröße ( wer will schon viele kleine 5 MB Dateien öffnen Vorlage (Ich würde darauf bestehen, dass folgende Werte enthalten sind: Startzeit, CPU, Reads, Writes, Textdata, Duration, Applicationame, Loginname, dmit ich ungefähr weiss, wer macht was mit meinen SQL Server und was kostet das ganze) FILTERN Zudem ist es dringend angeraten, das der Profiler nicht wahllos alles aufzeichnet, sondern man nur gezielt, die Dinge aufzeichnet, die entscheidend für eine spätere Analyse sind. Wie etwa ein Filter auf Applicationname oder Databasename usw.. Man kann übrigens nur das Filtern, was man auch aufzeichnet   SCRIPT Ist die Aufzeichnung nun fertig, läßt sich per Exportfunktion, das Script erstellen. Zu finden im Dateidialog. Das Script könnte in etwa so aussehen… /****************************************************/ /* Created by: SQL Server 2012 Profiler */ /* Date: 27/11/2013 09:04:07 */ /****************************************************/ -- Create a Queue declare @rc int declare @TraceID int declare @maxfilesize bigint declare @DateTime datetime /* -- Trace dynamisch bei Start für eine bestimmte Zeit laufen lassen -- declare @DateTime datetime select @datetime = dateadd(hh,2,getdate()) select @DateTime */ set @DateTime = '2013-11-27 10:02:57.000' set @maxfilesize = 100 -- Please replace the text InsertFileNameHere, with an appropriate -- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension -- will be appended to the filename automatically. If you are writing from -- remote server to local drive, please use UNC path and make sure server has -- write access to your network share exec @rc = sp_trace_create @TraceID output, 0, N'G:\LOGS\Demotrace', @maxfilesize, @Datetime if (@rc != 0) goto error -- Client side File and Table cannot be scripted -- Set the events declare @on bit set @on = 1 exec sp_trace_setevent @TraceID, 14, 1, @on exec sp_trace_setevent @TraceID, 14, 9, @on …..exec sp_trace_setevent @TraceID, 13, 14, @on -- Set the Filters declare @intfilter int declare @bigintfilter bigint exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Server Profiler - 72204397-8374-4b70-b3ee-1b7c63470134' -- Set the trace status to start exec sp_trace_setstatus @TraceID, 1 -- display trace id for future references select TraceID=@TraceID goto finish error: select ErrorCode=@rc finish: go .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Im Script muss man natürlich aufpassen, dass die Endzeit entahlten ist und vor allem dynamisch vergeben wird. Ist die Endzeit nicht enthalten, würde der Agent solange der SQL Server weiterlaufen.. oder die Platte voll ist. -- Trace dynamisch bei Start für eine bestimmte Zeit laufen lassen declare @DateTime datetime select @datetime = dateadd(hh,2,getdate()) select @DateTime set @DateTime = '2013-11-27 10:02:57.000' .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Übrigens ist es über TSQL möglich mehr Events abzufangen, als die Oberfläche hergibt. AUFTRAG Das letzte was wir brauchen ist nun ein Agentauftrag, in dem man das Script einfach mit Copy ‘n Paste reinwirf. Immer daran denken: Der Agent benötigt das Recht auf den Ordner, wo die Datei landen soll.   Fertig!

Aktuelle Freeware-Tools für SQL Server

Es gibt viele kostenlose SQL Server-Tools, die von SQL Server-Datenbankadministratoren sowie von Entwicklern und SQL Server-Produktanbieter entwickelt wurden, um bestimmte SQL Server-Probleme zu lösen und sie mit Funktionalitäten zu füllen. Ich möchte euch kurz aktuelle Freeware-Tools für den SQL Server vorstellen. 1. PAL PAL ist ein kostenloses Tool für den SQL Server, um Performance-Probleme zu diagnostizieren, das auch von Microsoft Support verwendet wird. Es ist in erster Linie ein PowerShell-Skript, das in einem Systemmonitor-Leistungsindikatoren-Protokoll komplexe und bekannte Schwellenwerte liest und analysiert. Das Tool generiert einen Bericht in HTML, in dem Überschreitungen von Grenzwerten mit einem Ampelsystem signalisiert werden. Es ist auf codeplex.com und sqlservercentral.com frei verfügbar. PAL wurde von einem Premier Field Engineer (PFE) namens Clint Huffman von Microsoft geschrieben. Mehr Informationen zu PAL und das Tool selbst bekommt Ihr hier: http://pal.codeplex.com/ Den Podcast dazu hier: http://s3.amazonaws.com/runas/runasradio_0184_clint_huffman.mp3 Link: http://msdn.microsoft.com/en-us/library/cc296652(v=bts.10).aspx 2. SQL Stress SQL Stress ist ein Tool für Belastungstests einer Microsoft SQL Server-Installation. Sein Hauptzweck besteht darin, Infrastrukturprobleme innerhalb einer Installation zu finden. Der Stresstest ist einsetzbar für Hardware-Sizing, System-Tuning oder Benchmarking. Voraussetzung ist eine installierte Version des .Net Framework 2.0. Das Tool läuft auf x86, x64 und Itanium-Prozessoren. Es wurde auf Microsoft SQL Server 2008 und Microsoft SQL Server 2005 getestet. Die meisten Funktionen stehen auch auf Microsoft SQL Server 2012 zur Verfügung. Die aktuelle Version des Tools ist kostenlos.   OStress (kostenlose Tool von Microsoft (kommt in RML Utilities vor)): OStress ist ein kostenloser Download von Microsoft und kommt in einer Suite der anderen nützlichen Werkzeuge vor. RML Utilities können Sie zum Analysieren und Vergleichen von verschiedenen Replay-Arbeitslasten für SQL Server verwenden. RML Utilities für SQL Server enthalten die folgenden Dienstprogramme: · ReadTrace· Reporter· OStress · OStress-Replay Control Agent (ORCA) Links:http://www.sqlstress.com/ http://www.sqlconsulting.com/news1103.htm http://support.microsoft.com/kb/944837 3. SQL Server Sentry – SQL Ausführungspläne SQL Sentry Plan Explorer hilft, den grafischen Plan zu analysieren und ist kostenlos auf der SQL Sentry-Website verfügbar. Dieses Tool gibt es entweder als Add-In für SSMS oder als eigenständiges Tool. Einige wichtige Funktionen bietet dieses kostenlose Tool: 1. Plan Readability Features (Lesbarkeitsfunktion): • Vollständige Objektnamen und Abfragen sind leicht zusehen – einfach mit der rechten Maustaste Objekte im Viewer anklicken. • Weitere Informationen finden sich in neuen Tabs wie der Statement-Tree-Tab, die Ausführungspläne liest und analysiert. 2. Usability-Features: Einige wichtige Features sind in diesem Tool enthalten: • Abfragen können direkt aus dem Plan Explorer ausgeführt werden, je nach Bedarf. Aber denken Sie daran, dass es sich um ein Abfragetool handelt. So erhalten Sie alle Informationen, die Sie benötigen, einschließlich I/O-Statistik, aber nicht das tatsächliche Ergebnis.• Plan Explorer behebt das Problem in SSMS, in dem eine fehlende Index-Warnung für alle Ausführungspläne in einem Batch erscheint. Informationen zu fehlenden Indizes werden in der Statement Tree Tab standardmäßig angezeigt. Systemanforderungen: Dieses Tool hat die gleichen Anforderungen wie SSMS und erfordert Microsoft .NET Framework 4.0,-; SQL Server 2005 und höher. Link: www.mssqltips.com 4. Microsoft Network Monitor 3.4 (Überwachung) Ein unerlässliches Werkzeug. Der kostenlose Network Monitor Tool von Microsoft speichert und analysiert den Datenverkehr im Netzwerk. Der Anwender ist also in der Lage, den Datenverkehr im Netzwerk zu analysieren. Tipp: Systemmonitor Der Systemmonitor (Perfmon) von Microsoft ist ein Visualisierungstool für Leistungsdaten, sowohl in Echtzeit als auch in Form von Protokolldateien. Sie können damit Leistungsdaten in einem Diagramm, Histogramm oder Bericht untersuchen. Weitere Details gibt’s im Blogbeitrag von Fumus. Der Network Monitor besitzt eine strukturierte und bedienbare Benutzeroberfläche und ordnet automatisch die empfangenen Daten beziehungsweise Protokolle einer Anwendung zu. Da der Network Monitor jedoch auch eine Filterfunktion und einen Parser mitbringt, ist eine weitergehende Analyse der empfangenen Pakete und eine fortgeschrittene Verwendung des Programms möglich. Das Programm sammelt die gesamten Netzwerkdaten, die über die LAN- oder WLAN- Schnittstelle übertragen werden, und speichert sie für eine spätere Analyse in einer Datei. Das Tool untersucht dabei die übertragenen Protokolldaten und ordnet die gesammelten Netzwerkpakete gleich einer Anwendung zu. Microsoft Network Monitor ist als Freeware direkt bei Microsoft erhältlich und lauffähig auf allen Windows-Versionen ab Windows XP. Links: http://www.microsoft.com/en-us/download/details.aspx?id=4865http://blog.fumus.de/sql-server/2010/02/sql-server-monitoring-messen-der-leistung-mit-systemmonitor-wichtige-leistungsindikatoren/ 5. SQL Load Generator Der SQL Load Generator ist ein kostenloses Tool zur Generierung von SQL-Serverlast. Dieses Tool ist auf Codeplex verfügbar. (CodePlex ist Microsofts kostenlose Projekt-Website, für das Hosting von Open-Source-Software.) Projektbeschreibung: SQL Load Generator wird verwendet, um mehrere gleichzeitige Abfragen auszuführen. Der Benutzer kann mit einem anderen Anmeldekonto und Anwendungsnamen,- die Anzahl der gleichzeitig auszuführenden Abfragen wählen und ausführen.   http://sqlloadgenerator.codeplex.com/ Des Weiteren gibt es so viele Tools, die kostenlos sind, dass man nicht unbedingt Geld für ein kostenpflichtiges Werkzeug ausgeben muss. Es lohnt sich Freeware Tools auszutesten, da man bestimmte SQL Server Probleme löst und bessere Funktionalitäten hat.

Wusstet ihr…

Noch vor gut 10 Jahren wurden dem SQL Server andere DB Systeme vorgezogen, die als „sicherer“ galten, wenn es um Ausfallsicherheit, Transaktionsgeschwindigkeit und große Datenmengen ging. Mittlerweile hat SQL Server nicht nur aufgeholt, sondern sich als Datenbanksystem etabliert. Gilt das nur für kleinere und mittelständische Betriebe, oder spielt der Microsoft SQL Server auch in der oberen Etage mit? Dieser Frage bin ich nachgegangen und habe ein paar Zahlen gefunden, bei denen man sich gut vorstellen kann, in welcher Liga nun SQL Server mitspielt. Die aktuelle Leistungsfähigkeit von Microsoft SQL Server – Top Statistik: Kategorie                                                                                                     Metric  Größte einzelne Datenbank:                                                                         350 Terabyte (TB) Größte Tabelle:                                                                                              1,5 Billionen Zeilen Größte Gesamtdaten pro Anwendung:                                                          88 Petabyte (PB) Höchste Datenbank-Transaktion pro Sekunde pro Server (von Performance Monitor):                                                      130.000 „Performance Monitor“: Systemmonitor ist ein Programm, das verwendet wird, um verschiedene Aktivitäten auf einem Computer wie CPU-Auslastung oder Speichernutzung zu überwachen. Betrifft: Windows 7, Windows Server 2008 R2, Windows Server 2012, Windows Vista. Schnellstes I/O-Subsystem in der Produktion  (SQLIO 64k buffer serial Lesetest):                                                              18 Gigabyte (GB) / Sekunde Schnellste Echtzeit-Cube:                                                                           Millisekunden Latenz Ein Echtzeit-Cube ist ein regulärer Cube, der beschäftigt relationale OLAP (ROLAP) Partitionen oder Dimensionen, die das Echtzeit-OLAP-Feature von Microsoft SQL Server 2000 Analysis Services unterstützen.   Laden von Daten für 1 Terabyte:                                                                    30 Minuten Größte MOLAP Cube:                                                                                    24 TB MOLAP steht für mehrdimensionales Online Analytical Processing. MOLAP ist eine Alternative zu der ROLAP (relationales OLAP)-Technologie. Die meisten MOLAP-Lösungen speichern Daten in einem optimierten mehrdimensionalen Array-Speicher anstatt in einer relationalen Datenbank (ROLAP). Wenigste anfällige Datenbank:                                                                      5 Jahre in Folge Meist verwendeten Datenbanken weltweit:                                                   46% Marktanteil Top Statistik – Azure SQL Server: Größte gemeinsame Datenbank:                                                                   20 TB Größte Anzahl von Datenbanken pro App:                                                     14.000 Die meisten gleichzeitigen Benutzer pro App:                                               3 Mio. Benutzer Größte Installation:                                                                                         *.cs = 14.832                                                                                                                          Web.config = 149                                                                                                                        *.csproj = 889 *.sln = 210 On-Premises: SQL Server-Fallstudien: On-Premises ist ein Nutzungsmodell für Computerprogramme (Software). Dabei erwirbt der Nutzer ein solches Computerprogramm und betreibt dieses selbst, also auf eigener Hardware. (In der Regel wird der Begriff On-Premise jedoch meist für Programme verwendet, die mehrbenutzerfähig und somit netzwerktauglich sind.) DATA WAREHOUSE/BI Erstellung eines Data-Warehouse 80 TB Sehr schneller Festplatten-subsystem OLTP Skalieren einer Datenbank Keine Ausfallzeiten erlaubt Über 16.000 Instanzen Microsoft CTP-Datenebene -Die Commerce-Transaktionsplattform unterstützt Abrechnung und Abonnements (eCommerce) für Microsoft-Produkte wie AdCenter, Xbox Live, Zune, Windows Live Hotmail Plus und Azure. -Die Commerce-Transaktionsplattform unterstützt Zahlungen mit 13 Zahlungsmethoden über 65 lokalisierten Märkte. -5 DBAs. Datenbankinfrastruktur (PROD) - 2 Rechenzentren - 5 Webstore Clusters - 220 2012 SQL Server (ohne VM) - 736 Datenbanken - 121 TB Datenfiles - 420 TB Speicher – DAS & SAN (EMC/HDS) - 12 TB monatliches Wachstum - 82 DB Mirror (Datenbankspiegelung ist die Erstellung und Pflege von redundante Kopien einer Datenbank) - 70 (paarweise) Protokollversand - 400 Datenverarbeitung-Abonnement-Streams, 6 Händler Große Health Care Provider (Krankenversicherungen) - 17 TB OLTP-Datenbank - 10.000 gleichzeitige Benutzerverbindungen BWIN - Weltweit größte börsennotierte Online-Gaming-Plattform - 15 Millionen Seitenabrufe und bis zu 980.000 individuelle User pro Tag Environment: - 5 DBAs & 1 Datenbankarchitekt - über 200 SQL Server-Instanzen - über 150 TB Daten - über 4.000 Datenbanken - über 2 PB Speicher - über 10 TB RAM - über 450.000 SQL-Anweisungen pro Sekunde auf einem einzelnen Server - über 500 Milliarden Datenbank Transaktionen pro Tag - Keine Ausfallzeiten erlaubt Bwin.party: Hohe Verfügbarkeit: - 3 Rechenzentren - (backup) 2 TB pro Stunde über das Netzwerk sichern Hardware für die wichtigsten SQL Server: - Fujitsu RX- 600 S5 - 64 Cores (Prozessorkern) - 1 TB RAM - Mehrere 1 Gbit NIC (Netzwerk-Interface-Controller, auch bekannt als Netzwerkkarte)    (Getrennte VLANs für Client-Zugriff, Cluster-Intercom, Backup) - FusionIO PCI-E Solid State-Geräte (SSD) für Transaktionslog SQL Server 2014 - Kunden wie EdgeNet und Bwin erzielen erhebliche Leistungssteigerungen durch die neue In-Memory-OLTP - Erhöhung der Skalierbarkeit auf bis zu 640 logische Prozessoren und 4 TB RAM (Speicher) in einer physischen Umgebung und bis zu 64 virtuelle Prozessoren und 1 TB Speicher pro VM. Quelle: http://channel9.msdn.com/Events/TechEd/NewZealand/2013/DBI309

SQL Alias – Wenig Arbeit mehr Komfort für Sharepoint Admins


Andreas Rauch

Warum das Leben nicht einfacher gestalten..? Nehmen wir doch mal folgende Fälle an: Man möchte die Datenbanken des Sharepoint Servern auf einen anderen Server umziehen ohne den aktuellen Server herunterzufahren. Oder man entscheidet sich Gründen der “Hochverfügbarkeit”  Datenbanken auf einen Server redundant (per Logshipping bspw) mitlaufen zu lassen. Fällt nun SQL Server 1 aus, soll SQL Server 2 rangehen. Aber wie bekommt man in Sharepoint den Switch hin? Im Falle von Sharepoint würde man nun versuchen, vermutlich in der ZA, die Datenbankserver zu ändern. Oder man ändert im DNS Server die IP Adresse des SQL Servers, so dass nun der gleiche Name, aber eine andere IP Adresse, die des neuen SQL Servers, rangeht. Allerdings bringt diese zweite Lösung nichts, wenn man mit benannten Instanzen arbeitet und sich mehr oder weniger per Zufall der Port des SQL Servers geändert hat. DNS macht keine Port Aliase Aber warum auch so umständlich, wenn es auch leichter geht: mit SQL Alias. SQL Allias Ein SQL Alias ist die sehr sehr einfache Methode auf dem jeweiligen Betriebssystem speziell für SQL Server andere (virtuelle) Namen und Ports für SQL Instanzen bekannt zu geben. Die SQL Aliase gelten sofort .. ab Eintrag! Beispiel: Man hat einen SQL Server SQL1 und zieht die Datenbanken auf SQL2 um. Als SQL Alias legt man einen SQL1 (Port 1433) ein und definiert aber , dass die tatsächliche Instanz der SQL2 auf 1433 ist. Sharepoint oder auch jede andere Software wird diese Settings auf der Stelle verwenden. Wie gehts? SQL Alias mit SQL Konfigurationsmanager Mit dem SQL Server wird auch der SQL Konfigurationsmanager mitgeliefert. In diesem kann man so wichtige Dinge wie Protokolle, Ports, Servicekonten usw einstellen… und eben auch SQL Alias: Es gilt nur ein wenig aufzupassen. Je nach Clientsoftware (32 oder 64-bit) kann man die Aliase vergeben. Im besten Falle vergibt man halt Alias Bezeichnungen für beiden Bereichen. Dazu legt man per rechter Maus einen neuen Alias an, vergibt den Aliasname: Name wie der SQL Server aufgerufen werden soll Portnummer: Port der SQL Server Instanz (Std = 1433) Server: Name des tatsächlichen Servers, auf dem die Instanz zu finden ist. Ergebnis:     Problem   Sofern SQL Server oder die Tools dazu nicht auf dem Server installiert sind, haben wir kein SQL Server Konfigurationsmanager.! Aber wir haben cliconfg.exe   CLIFONFG.EXE Cliconfg macht exakt dasselbe. Nur wo ist das..? Guggste für 32-bit unter c:\Windows\system32 und für 64-bit Clients unter c:\Windows\SysWoW64. Effektiv geben wir exakt die gleichen Informationen ein. Wir schalten zuerst das TCP/IP Protokoll frei, dann vergeben wir einen Alias und die entsprechenden Ports und tatsächlichen SQL Server Maschinen Namen (nicht die Instanznamen).   REGISTRY   Letztendlich sind die Settings in Registry zu finden. und ließen sich automatisiert verteilen, wenn man den entsprechenden Schlüssel exportiert und anschließend editiert:   Sharepoint Wenn Sie sich also einen Gefallen tun wollen, dann verwenden Sie bereits bei der Konfiguration zu Beginn einen SQL Alias. Dann müssen Sie lediglich im Fall des Falles nur den tatsächlichen Server im Alias ändern. Sharepoint und jede andere Software wird das sofort mitmachen.   Falls Sie dies nicht getan haben, können Sie das dennoch auch nachträglich tun. Einfach als Alias den aktuell gültigen SQL Server als Alias eintragen und den neuen SQL Server als tatsächlichen Datenbankserver eintragen. Fertig…   Einfach und große Wirkung!   Verwandte Artikel: SQL Server Multiserver Verwaltung leicht gemacht (17.2) SQL Server: Index Leitfaden – Verwaltung der Indizes durch Rebuild oder Reorganize (15.6) Systemanforderung: Sharepoint 2010 – Datenbank Server (13.7) Komfortable Sicherungen der Sharepointfarm per Powershell (12)

SQL-Server startet nach SYSPREP auf SCCM-Server nicht mehr?!?

Auf einem Test-Server für eine System Center Configuration Manager 2012 Umgebung lief auch der dazu notwendige SQL-Server. Da die Hardware einen Defekt aufwies, musste ich das System auf eine neue Hardware umziehen. Problematisch: Alte und neue Hardware waren derart verschieden, dass hier Probleme zu erwarten gewesen wären, wenn ich die Platten einfach nur umgesteckt hätte. Also habe ich vorher einen Sysprep inkl. /generalize laufen lassen. Nach dem Umbau der Festplatten in den neuen Server startete dieser Anstandslos. Das Problem: Die SQL-Server-Dienste starteten nicht! Problem: Durch den SYSPREP sind die privaten Schlüssel für die SSL-Kommunikation verloren gegangen, da der alte User-Account ja danach nicht mehr vorhanden war. Dies war u.a. im Logfile "C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG" nachzulesen: "The server could not load the certificate it needs to initiate an SSL connection. It returned the following error: 0x8009030d [...]" Lösung: Im "SQL Server Configuration Manager" die Zuordnung zum alten Zertifikat löschen: Nach einem Reboot des Servers generiert dieser ein neues Zertifikat und trägt dieses hier entsprechend ein (Es existieren dann 2 Zertifikate mit gleichem Namen, man kann sie aber u.a. am Ausstellungsdatum unterscheiden). Dieses neue Zertifikat muss nun noch zu den "Vertrauenswürdigen Stammzertifizierungsstellen" hinzugefügt werden bzw. evtl. den Clients als vertrauenswürdig bekanntgegeben werden. Danach sollte alles wieder funktionieren, im Logfile steht dann: "A self-generaterd certificate was successfully loaded for encryption. [...]"