SQL Server Team Deutschland

Blog – Beitragsliste
  • Laufende Summe (RunningTotal) in DAX

    Auf die Frage nach der laufenden Summe (RunningTotal) in DAX finden sich einige Hilfreiche Blogs mit Lösungsmöglichkeiten. Grundsätzlich unterscheiden kann man zwischen einer Lösung als Calculated Measure und einer als Calculated Column. Welcher Lösung der Vorzug geschenkt werden sollte möchte ich hier zur Diskussion stellen. Aus meiner Sicht gibt es neben dem grundsätzlichen Unterschied Column oder Measure auch noch Unterschiede in der Reihenfolge der Filter. Vor allem für große Datenvolumina würden mich Laufzeitunterschiede interessiern. Also posted Eure Erfahrungen hier.

    Beispiel Tabelle

    TIDAccountValue
    1 A 100
    2 B 200
    3 C 200
    4 A 10
    5 B 100
    6 C 200
    7 A 300
    8 B 230
    9 C 160
    10 A 90
    11 B 20

     

    Calc als Column

    =SUMX(FILTER(TX;[TID]<=EARLIER([TID])&&[Account]=EARLIER([Account]));[Value])

     

    Calc als Measure

    MRunTotal:=IF( COUNTROWS( VALUES( TX[TID]) ) = 1;
    CALCULATE( SUM( TX[Value] );
    Filter(All(TX);TX[TID]<=VALUES(TX[TID]));
    Filter(All(TX);TX[Account]=VALUES(TX[Account]))
    ))

     

    Sample Excel Datei

  • SQL Server® 2012 Performance Dashboard Reports

    Wer das SQL Performance Dashboard lieb gewonnen hat, kann ebenfalls eine Version für SQL 2012 herunterladen. Wer es noch nicht kennt, sollte unbedingt einen Blick drauf werfen.

    http://www.microsoft.com/en-us/download/details.aspx?id=29063

    Viele Spass

    Markus Thomanek

     

  • SharePoint Workflow Integration mit Master Data Services

    Eine aktualisierte Version des TechNet Artikels "Configuring Workflow Integration with Master Data Services" steht seit kurzem zur Verfügung, näheres finden Sie hier: http://social.technet.microsoft.com/wiki/contents/articles/7879.configuring-workflow-integration-with-master-data-services.aspx

    Viele Grüße

    Markus Thomanek

     

  • Gerüchte und Mythen über SQL Server

     

    In meiner beliebten Reihe „Fragen von Kunden“ gibt es heute mal einige Gerüchte zu SQL Server, die von Wettbewerbern genannt werden um den Kunden zu verunsichern. Ich bin schon ziemlich erstaunt, welche Informationsdefizite bestehen…

    Zu den Gerüchten:

    1. Der SQL Server kann keine vernünftigen Locks (Sperren) durchführen. Er lockt (sperrt) immer seitenweise, was dazu führt, dass man unvorhersehbares Laufzeitverhalten erzeugt.

    Tja, SQL Server 6.5 hat noch ganze Seiten gesperrt…

    Seit SQL Server 7.0 gibt es Row Level Locking. Allerdings wählt SQL Server bei großen Mengen von Datenänderungen auch manchmal Page (Seite) oder gar Table Locks, da dies Hauptspeicher und vor allem die Zeit zum Setzen und Entfernen der Locks spart. Hier ist SQL Server deutlich effizienter als andere Datenbanksysteme. Wem dieses Verhalten nicht gefällt, der kann einen ROWLOCK Table Hint in den Abfragen verwenden oder Page Locks für einen Index mit der Index Option ALLOW_PAGE_LOCKS = { ON | OFF } deaktivieren. Bei manchen Vorgängen, insbesondere DDL-Statements wie ALTER TABLE ist allerdings ein Table Lock unumgänglich, das ist in anderen Datenbanken auch so.

    2. SQL Server verwendet pessimistisches Locking. Dadurch blockieren Leser Schreiber und umgekehrt und die Parallelität wird gesenkt

    Ausschließlich pessimistisches Locking wurde bis SQL Server 2000 verwendet…

    Seit SQL Server 2005 hat der Kunde die Wahl, ob er optimistisches oder pessimistisches Locking verwenden will, wobei pessimistisches nach wie vor der Standard ist.

    Worum geht es? Nehmen wir an, Transaktion A will einen Datensatz schreiben, Transaktion B denselben Datensatz lesen (bei Row Level Locking). Beide Transaktionen sind noch nicht abgeschlossen. Klar ist, dass Transaktion B auf keinen Fall den noch nicht committeten neu geschriebenen Wert lesen darf (Dirty Read), denn es kann ja sein, dass Transaktion A zurückgerollt wird. Nun hat die Datenbankengine zwei Möglichkeiten:

    Pessimistisches Locking: Wenn der Datensatz von Transaktion B geschrieben wird setzt die Engine einen exklusiven Lock auf den Datensatz. Transaktion B will vor dem Lesen einen Shared Lock haben, bekommt den aber wegen dem exklusiven Lock erst nach Abschluss von Transaktion A.

    Optimistisches Locking: Bis zum Abschluss der Transaktion A wird neben den geänderten Daten auch die alte, committete Version des Datensatzes gehalten (in tempdb). Dadurch kann Transaktion B die alte Version der Daten lesen und es ist kein Shared Lock notwendig. Das entspricht zum Beispiel dem Verhalten in Oracle (Oracle verwendet die Begriffe pessimistisch und optimistisch allerdings ein wenig anders, da es die hier angegebene erste Variante gar nicht gibt). Optimistisches Locking können Sie in SQL Server mit READ_COMMITTED_SNAPSHOT oder TRANSACTION ISOLATION LEVEL SNAPSHOT (mit leicht unterschiedlichem Verhalten) verwenden. Mehr dazu hier: http://msdn.microsoft.com/en-us/library/ms179599.aspx

    Warum gibt es nun beide Varianten? Weil pessimistisches Locking ressourcenschonender und für Szenarien besser geeignet ist, wo meist unterschiedliche Datensätze zugegriffen werden (z.B. Lagerhaltung). Optimistisches Locking ist hingegen flexibler.

    3. Der SQL Server ist fast unbezahlbar, da man keine vernünftige Lizensierung durchführen kann, die eine unbeschränkte Anzahl von Usern (z.B. im Web-Betrieb) erlaubt.

    SQL Server kann man auf Prozessor (bis 2008R2) bzw. Core (ab SQL 2012) Basis lizenzieren und damit beliebig viele Benutzer supporten. Und auch die kostenlose SQL Server Express Version ist in manchen kleinen Web-Szenarien eine Option.

    Bei der Gelegenheit: Auch von Oracle gibt es ja eine kostenlose Express Version (XE). Allerdings wird diese im Gegensatz zu SQL Server Express nicht gepatcht, auch nicht bei den reichlich vorhandenen Sicherheitslücken. Damit ist sie für Web-Aufgaben (und eigentlich für fast alle Aufgaben) komplett ungeeignet.

    4. Der SQL-Server verwendet immer feste, nicht anpassbare Blockgrößen bei der Speicherung. Oracle kann hier zwischen 2K und 32K skalieren.

    Das ist richtig, SQL Server verwendet immer 8k Datenseiten für die Speicherung. Die gesamte Datenbankengine und das IO Subsystem ist daraufhin optimiert, und auch Hersteller von Storagelösungen können sich darauf einstellen. In Oracle gibt es die Möglichkeit, die Blockgröße anzupassen, aber nur die wenigsten Kunden nutzen diese Möglichkeit. Zumal verschiedene Blockgrößen innerhalb einer Instanz zu einer Fragmentierung des Hauptspeichers führen würden – man kann nun mal nicht eine 32kB Seite in den Platz laden, der von 4 8kB Seiten freigegeben wurde, wenn dieser Platz nicht hintereinander liegt.

    Die Performanceergebnisse von SQL Server geben uns hier wohl recht… Und bei größeren Datenmengen verwendet SQL Server Read Ahead mit Lesegrößen bis zu 1024 kB, um effizienter auf das Storagesystem zuzugreifen.

    5. Der SQL-Server hält sich nicht an die ANSI-Standards und hierdurch ist Interoperabilität nicht gewährleistet.

    Es ist zwar richtig, dass es geringe Unterschiede zwischen SQL Server und ANSI SQL gibt, aber meines Wissens gilt dies auch für jedes andere relationale Datenbank. Einige der Differenzen zwischen Oracle SQL und ANSI SQL finden sich hier: http://de.wikipedia.org/wiki/Oracle_(Datenbanksystem)#Abweichungen_vom_ANSI-SQL-Standard. Allerdings ist diese Liste bei weitem nicht vollständig. So ist zum Beispiel die Oracle SEQUENCE-Syntax nicht ANSI compliant (die von SQL Server 2012 schon).

    Im Falle von SQL Server liegen die Unterschiede vor allem in Datentypen (wie TIMESTAMP), die bereits vor Verabschiedung des ANSI Standards anders verwendet wurden.

    Allgemein haben allerdings alle großen Datenbanksysteme viele Features, die weit über den ANSI Standard hinausgehen. Daher ist Interoperabilität immer nur dann möglich, wenn beim Schreiben des SQL Codes ausdrücklich darauf geachtet wird, nur standardisierte Sprachkonstrukte zu nutzen.

    6. Es gibt kein Äquivalent zu den PLSQL-Packages des Oracle, das ein Lifecycle-Management sowie eine Verteilungs-Strategie zulassen würde.

    Da hätten wir ja eines der nicht standardkonformen Oracle-Features. In ANSI SQL gibt es kein CREATE PACKAGE…

    SQL Server hat zwar keine Packages, wer möchte kann allerdings Schemas stattdessen zur Strukturierung des Codes verwenden (für die Oracle-Fraktion: in SQL Server werden Schemas anders verwendet als in Oracle. Ein Oracle-Schema entspricht mehr einer SQL Server Datenbank)

    Für Lifecycle Management und Verteilungsstrategie gibt es allerdings in SQL Server deutlich bessere Varianten. Insbesondere die Möglichkeit der Integration von SQL Server Management Studio mit Quellcodeverwaltungssystemen, die neuen SQL Server Data Tools mit ihrem kompletten round trip engineering für Datenbankcode, die DAC-Pakete und die Integration mit Visual Studio Team System wären hier zu nennen…

    Wie andere Datenbanksysteme auch unterliegt SQL Server einer ständigen Weiterentwicklung, um das geeignete Datenbanksystem zu finden sollte man immer über die aktuellen Möglichkeiten informiert sein. Ich hoffe ich konnte mit diesen Beispielen zeigen wie wichtig dies ist.

    Zum Abschluss noch ein paar Links zum Thema SQL Server Mythen:

    Gruß,
    Steffen

  • Time Intelligence in SSAS Tabular Modellen

    Analysis Services bietet im Multidimensionalen Modell mit Calculations und MDX charmante Möglichkeiten Zeit- bzw. Periodenvergleiche zu realisieren. Die notwendige Dynamik wird durch die Architektur und Sprachkonstrukte wie SCOPE, THIS und ORDINAL sichergestellt. Wie lässt sich nun dieses flexible Konzept auf ein Tabular Modell übertragen?

    Grundsätzlich steht als DDL DAX zur Verfügung, allerdings ist man limitiert durch die Architektur und die Sprachkonstrukte. Der Periodenvergleich fordert verschiedene Flexibilitäten:

    1. dynamische Bestimmung des Measures
    2. dynamische Bestimmung des Zeitraums
      1. daraus resultierend dynamische Bestimmung der Ebene in der Zeithierarchie

    Die Dynamisierung des Measures kann durch Hinzufügen einer weiteren Tabelle und einer kleinen Berechnungformel erledigt werden. Nehmen wir an das die Measures "Revenue" und "Quantity" zur Verfügung stehen, dann sieht die Tabelle folgendermaßen aus:

    DynMeasure
    Revenue
    Quantity

    die zugehörige Funktion wie folgt:

     CP:=IF(COUNTROWS( VALUES(DynMeasure[DynMeasure]))=1;
    SWITCH(Values(DynMeasure[DynMeasure])
    ;"Revenue";[Revenue Sum]
    ;"Quantity";[Quantity]
    ))

    Wählt man nun anstatt "Revenue" oder/und "Quantity" als direktes Measure "CP" und fügt die Dimension DynMeasure dem Pivot hinzu, lässt sich über einen Filter auf DynMeasure bestimmen welche Measures angezeigt werden. Das Verhalten ist somit ähnlich einer Implementierung in der nur das Measure "Value/Wert" existiert.

    Um die Zeitintelligenz hinzuzufügen kann auf einige implementierte Funktionen zurückgegriffen werden. Jedoch fehlt die Möglichkeit zur Bestimmung der Ebene in einer Dimension. Als Hilfskonstrukt kann für die Zeit folgende Funktion dienen:

    MD:=ROUNDDOWN( COUNTROWS( DATESBETWEEN('Date'[Date]; FIRSTDATE('Date'[Date]); LASTDATE('Date'[Date])))/30;0)

    Die einzelnen Periodenberechnungen können direkt im Summationsbereich der Tabelle hinterlegt werden:

     PY:=[CP](SAMEPERIODLASTYEAR('Date'[Date]))
    PQ:=[CP](PREVIOUSQUARTER('Date'[Date]))
    PM:=[CP](PREVIOUSMONTH('Date'[Date]))
    PD:=[CP](PREVIOUSDAY('Date'[Date]))

    Da ich in der Regel unterjährig auswerte, bevorzuge ich SAMEPERIODLASTYEAR anstatt PREVIOUSYEAR, da somit der selbe Zeitraum im Vorjahr gewählt wird, anstatt das gesamte Jahr. Die Berechnungen ziehen schon dynamisch das jeweils von mir gewählte Measure an. Alternativ kann auch mit Parallelperiod gearbeitet werden, jedoch gibt es dort keine Entsprechung zu PreviousDay.

    Um diese Berechnungen nun auch dynamisieren kann folgende Formel verwendet werden:

    PP:=SWITCH([MD];12;[PY];3;[PQ];1;[PM];0;[PD])

    Zur Auswertung im Pivot werden das Measure "CP" und "PP" hinzugefügt, mit einem Slicer kann einfach das Ein- bzw. Ausblenden von Measures realisiert werden.

    Eine Verwendung von switch bzw. if Statements sollte in jedem Fall einer Performanceüberprüfung unterzogen werden, so das ggf. der Komfort der Dynamisierung angepasst werden muss.

  • Videoserie AlwaysOn in SQL Server 2012

    Beim PASS Camp im November habe ich einen kompletten Tag zu der neune Hochverfügbarkeitslösung AlwaysOn in SQL Server 2012 bestritten und dabei die komplette Installation einer etwas komplexeren AlwaysOn Umgebung als Demo gezeigt und als Lab angeboten.

    Diese Demo habe ich nun als Videos aufgenommen.

    Im ersten Teil zeige ich die Installation eines 4-Knoten-Clusters auf Basis von Windows Server 2008 R2 SP1, wobei zwei von den vier Knoten Zugriff auf ein iSCSI SAN haben (und die anderen beiden nicht)

    Im zweiten Teil  baue ich einen 2-Knoten SQL Server Failover-Cluster auf und teste ihn

    Im dritten Teil baue ich aus dem SQL Server Failover Cluster und den anderen beiden Windows Cluster Konten eine AlwaysOn Availability Group auf, richte Read Only Routing ein und teste das ganze.

    Die Videos finden sich hier:

    Teil 1: Windows Cluster TechNet Edge (incl. Download) Youtube
    Teil 2: SQL Cluster TechNet Edge (incl. Download) Youtube
    Teil 3: Availability Group TechNet Edge (incl. Download) Youtube

    Gruß,
    Steffen

  • SQL Server 2012 RC ist verfügbar

    Der Release Candidate (RC) von SQL Server 2012 ist jetzt verfügbar. Diese Version ist Feature Complete und kann so für Tests mit den finalen Features von SQL Server 2012 eingesetzt werden.

    Gegenüber der letzten CTP-Version gibt es einige wesentliche Verbesserungen

    • Die Hochverfügbarkeitslösung AlwaysOn ist nun Feature Complete. Es können bis zu 5 Replikas (1 Primäre schreibbare, 2 synchrone sekundäre, 2 asynchrone sekundäre) eingerichtet werden. Lesbare Secondaries und Backup von den Secondaries sind unterstützt. Letzteres kann man sogar über den Assistenten einrichten:
      3-2-1 Replicas3-2-2 Listener3-2-3 Synchronisation
    • In Power View kann jetzt eine “Mappe” aus unterschiedlichen Views angelegt werden
    • Ebenso gibt es in Power View jetzt eine Druckfunktion und einen PowerPoint Export:
      3Reading Mode4image
    • Der Resource Governor hat einige neue Funktionen für große Umgebungen, wie detailliertere CPU Kontrolle und Resource Pool Affinity
    • Change Data Capture von Oracle ist nun möglich
    • SQL Management Studio unterstützt Snapshot Backups von SQL Azure

    Die offizielle Information findet sich im Dataplatform Insider Blog

    Der Download ist hier (für Deutsch einfach auf deutsch umstellen). Die Release Notes finden sich auch dort. Wichtig sind vor allem die OS-Patches für AlwaysOn Availability Groups!

    Gruß,
    Steffen

  • Microsoft, Big Data und Hadoop – was steckt dahinter?

    Auf dem SQLPass Summit 2011 hat Microsoft Corporate Vice President Ted Kummert die Microsoft Roadmap und Strategie zu “Big Data” vorgestellt. Ein wichtiger Baustein in dieser Roadmap ist hierbei das Apache Projekt Hadoop. Doch was steckt hinter Big Data, Hadoop und  der Ankündigung von Microsoft sich im Umfeld von Big Data zu engagieren.

     Was versteht man unter Big Data?

    Wie der Name “Big Data“ schon vermuten lässt, geht es in der Regel darum, große Datenmengen mit  hohem Durchsatz zu verarbeiten, die klassische Datenbanken und auch entsprechende Analyse Werkzeuge nur sehr eingeschränkt verarbeiten können.  Dies können z. B. Log Files, Images, Videos, Sensor Daten , Finanz oder auch Börsendaten sein. Um derartige große Datenmengen effizient verarbeiten zu können, wird bei Big Data auf den Ansatz einer Massiv Parallelen Architektur zugegriffen, die die Last auf z.B. mehrere 1000 Server verteilt.

    Für Facebook und Yahoo gibt es im Zusammenhang mit  „Big Data“ z. B. folgende beeindruckende Zahlenwerte, die ich dem Hadoop Wiki entnommen habe.

    • Facebook: Currently they have 2 major clusters:
      • A 1100-machine cluster with 8800 cores and about 12 PB raw storage.
      • A 300-machine cluster with 2400 cores and about 3 PB raw storage.
      • Each (commodity) node has 8 cores and 12 TB of storage.
      • Facebook’s Hadoop/Hive system ingests 15 terabytes of new data per day
    • Yahoo:
      • More than 100,000 CPUs in >40,000 computers running Hadoop
      • Our biggest cluster: 4500 nodes (2*4cpu boxes w 4*1TB disk & 16GB RAM)

     Und was ist Hadoop?

    Das Apache Projekt Hadoop ist ein Framework zur parallelen Datenspeicherung und -verarbeitung sehr großer Datenmengen, die verteilt in Clustern von Servern „fehlertolerant“ im lokalen Filesystem gespeichert werden. Das Design von Hadoop ermöglicht Skalierungen von einem einzelnen Server bis zu mehreren tausend Servern.  Eine umfangreiche Referenzenliste finden Sie HIER.

    Das Projekt besteht primär aus den folgenden Unter-Projekten:

    Weitere Details zu Hadoop finden Sie auf der Hadoop Projektseite HIER.

     Was beinhaltet die Microsoft-Ankündigung?

    • In Zusammenarbeit mit dem Partner Hortonworks ist es geplant, Hadoop vollständig auf dem Windows Server zu  „portieren“. Ein CTP für Hadoop-Based Services, sprich eine „Hadoop Based Distribution“ für Windows Server, ist für 2012 geplant.
    •  Zudem ist es geplant, Hadoop auch als Dienst in Windows Azure anzubieten. Die Verfügbarkeit eines Community Technology Preview (CTP) von Hadoop-Based Services für Windows Azure  ist für Ende 2011 geplant. Primäres Ziel ist es, Entwicklern und Anwendern die Möglichkeit zu geben, standard Hadoop Jobs  direkt in der Azure Cloud ablaufen zu lassen.  Weitere Infos finden Sie HIER.
    • Darüber hinaus wurde die Verfügbarkeit von Konnektoren bekannt gegeben, die er ermöglichen, vom Connector for SQL Server und Connector for SQL Server Parallel Data Warehouse auf Hadoop zuzugreifen und damit eine einfache Integration der „Big Data“ Welt mit der bestehenden SQL Server Welt zu ermöglichen.
    • Zudem ist ein Hive ODBC Driver & Hive Add-in for Excel geplant, um direkt mit Excel und PowerPivot auf Hadoop zugreifen zu können.

    Weiterführende Informationen  finden Sie  auch in dem White Paper HIER., der Webseite HIER. und der Original-Ankündigung Hier.

    Welche Möglichkeiten ergeben sich aus der Ankündigung?

    Mit diesem Ansatz ermöglicht Microsoft den Kunden, beide Welten zusammen zu führen - die Welt der „Big Data“ und der relationalen Welt mit dem SQL Server – und  die Stärken aus beiden Welten für sich nutzbar zu machen. Die Vorteile sind u. a.:

    • Steht Hadoop auf Azure zur Verfügung, hat der Kunde nahezu unbegrenzte Skalierungsmöglichkeiten und kann sehr leicht eine „BigData“ Umgebung aufbauen  und standard Hadoop Jobs  direkt in der Azure Cloud ablaufen lassen.
    • Die Konnektoren ermöglichen einen leichten Zugriff auf die in Hadoop-Systemen abgelegten Daten.. Beispielsweise können Kunden die unstrukturierten Daten in Hadoop analysieren und die daraus gezogenen Erkenntnisse in ein Data-Warehouse im SQL Server nutzbar machen.
    • Die neue Hadoop basierende Distribution für Windows ermöglicht eine einfachere Installation, Konfiguration und Nutzung auf der Windows Plattform. Weitere Infos finden Sie HIER.
    • Anwender können mittels Hive ODBC Driver oder auch Hive Add-in for Excel mit den Microsoft Excel und auch Power Pivot for Excel  direkt auf Hadoop Daten zugreifen und individuelle Analysen durchführen. Weiter Information dazu finden Sie HIER.

     Viel Spaß mit GROßEN Daten wünscht

    FSeiwerth

     

  • Betreiben von SQL Server in Virtualisierungsumgebungen – einige Hinweise

    Zum Thema betrieb von SQL Server in Virtualisierungsumgebungen und Private Cloud Szenarien gibt es auf der SQL CAT Seite vier hervorragende Whitepaper:

    Für diejenigen, die nicht die Zeit haben um sich die Whitepaper durchzulesen möchte ich hier die wichtigsten Fakten (ohne Anspruch auf Vollständigkeit) einmal zusammenstellen

    Installation

    • Dies betrifft Neuinstallationen in die Konsolidierungsumgebung, nicht die Migration von vorhandenen Umgebungen
    • Für Private Cloud/Konsolidierungsumgebungen ist es empfohlen, SQL Server VMs aus VM-Templates zu erstellen
    • SQL Server unterstützt sysprep zum Erstellen des Templates erst seit Version SQL Server 2008 R2
    • Man muss für sysprep genau nach Anleitung vorgehen. Die Installation erfolgt in 2 Schritten: Vorbereiten (danach sysprep und Template erstellen) und abschließen. Dokumentation: http://msdn.microsoft.com/de-de/library/ee210754.aspx
    • Stellen Sie unbedingt sicher, dass die Hyper-V Integrationskomponenten (bzw. das Äquivalent für die verwendete Virtualisierungsumgebung) in der jeweils aktuellen Version installiert sind, verwenden Sie keine emulierten Geräte

    Migration

    • Um festzustellen, welche SQL Server Instanzen in die virtuelle Umgebung migriert werden können verwendet man am einfachsten das MAP Toolkit Demo von mir hier

    Dynamic Memory

    • SQL Server unterstützt Hyper-V 2008 R2 SP1 Dynamic Memory
    • Das SQL Server Dienstkonto sollte unbedingt das Recht “Lock Pages in memory” haben
    • Die Summe der “Startup Memory” Einstellungen aller VMs, die potentiell (auch nach einem ungeplanten Failover) auf einem Host laufen können muss kleiner sein als der physikalische Speicher des Hosts
    • Wenn möglich sollte vor einer (geplanten) Live Migration einer SQL VM der Hauptspeicher von SQL Server mittels sp_configure ‘max server memory’ reduziert werden. Nicht vergessen, diese Einstellung nach der Live Migration wieder zu zurückzunehmen!
    • Über “Memory Weight” kann man die Priorität der VMs bei der Hauptspeicherzuteilung einstellen

    Storage

    • Alle Best Practices für SQL Server Storage gelten auch für virtualisierte Umgebungen. Siehe mein Webcast SQL Server Storage Performanceanalyse
    • Daher für Lastsysteme: Daten und Logs auf getrennte LUNs, hinter denen getrennte Platten liegen
    • Auf keinen Fall dynamische Disks für Daten und Logs
    • Entweder Passthrough Disks oder VHDs fester Größe verwenden

    CPU

    • Virtualisierung erhöht leicht den CPU-Bedarf von SQL Server. Da Hyper-V maximal vier virtuelle CPUs pro VM unterstützt bedeutet das, dass nur Lasten, die weniger als 4 volle CPU-Cores benötigen virtualisiert werden sollten.
    • Wenn CPUs overcommitted werden (also der Summe aller VMs mehr virtuelle CPUs zugewiesen werden als der Server physische CPU-Kerne hat) so erhöht sich der CPU-Bedarf durch die Virtualisierung weiter. Daher sollte bei Lastsysteme Overcommitment vermieden werden. Das gilt insbesondere, wenn die verwendeten Prozessoren keine Second Level Address Translation (SLAT) unterstützen
    • Netzwerk-intensive Lasten erhöhen ebenfalls den CPU-Bedarf

    Hochverfügbarkeit

    • Sowohl Host-Clustering (mit Live Migration) als auch Guest Clustering (Windows/SQL Cluster in VMs) ist mit Hyper-V unterstütz (zu VMWare siehe unten). Beides kann für höchste Flexibilität und Ausfallsicherheit kombiniert werden.
    • Ebenso ist Database Mirroring und Log Shipping auch im virtualisieren Betrieb unterstützt

    Lizenzierung

    • SQL Server Enterprise bzw. Datacenter können in Virtualisierungsszenarien durch die erweiterten Virtualisierungsrechte deutlich Kosten sparen
    • Details dazu auf der SQL Server Lizenzierungs-Seite

    VMWare (und andere)

    • Grundsätzlich ist VMWare (und andere Hypervisor) als Virtualisierungsumgebung supportet, solange die konkrete VMWare Version mit dem SVVP validiert ist. Details: http://support.microsoft.com/kb/956893/en-us
    • Soll statt Hyper-V VMWare eingesetzt werden so muss man sich die Limitationen von ESX, insbesondere in Zusammenhang mit Clustern klar machen. So vMotion nicht in Kombination mit Windows Clustering unterstützt. Man muss sich also zwischen Host Clustering (vMotion) und Guest Clustering (SQL Server/Windows Server Cluster) entscheiden. Das ist nicht gut, denn die beiden Technologien schützen gegen unterschiedliche Arten von Ausfällen. Ebenso ist iSCSI nicht unterstützt.
      Quelle: http://www.vmware.com/pdf/vsphere4/r41/vsp_41_mscs.pdf Seite 11

    Gruß,
    Steffen

  • SQL Server “Denali” CTP3 Product Guide verfügbar

    Mit dem CTP3 Product Guide für SQL Server “Denali” ist jetzt eine umfangreiche Sammlung an Ressourcen verfügbar um sich mit allen wichtigen Neuerungen vertraut zu machen. Der Product Guide enthält:

    • 14 Product Datasheets
    • 8 PowerPoint Präsentationen
    • 5 Technische Whitepaper
    • 13 Hands-On Lab Preview Dokumente
    • 6 Click-Through Demos
    • 13 automatisch ablaufende Demos
    • 26 Links zu Online-Dokumentationen
    • 44 Links zu Online-Videos einschließlich 26 Präsentationen von der US-TechEd 2011

    Der Download des Product Guide findet sich hier

    Gruß,
    Steffen

  • Volltextfeatures in SQL Server “Denali” Teil 2: Semantische Suche

    Nachdem ich im letzten Artikel über allgemeine Neuerungen in der Volltextsuche von SQL Server „Denali“ gesprochen habe geht es dieses Mal um ein komplett neues Feature in der Volltextsuche: Statistische Semantische Suche. Das Wort „semantisch“ hat in der IT viele Bedeutungen, hier heißt es: Die Volltextsuche erkennt statistisch relevante Schlüssel-Phrasen in Dokumenten und kann diese Erkenntnis für die Extraktion dieser Schlüssel-Phrasen und für die Analyse der Ähnlichkeit von Dokumenten verwenden. Typische Fragestellungen für die semantische Suche sind: „Was sind wichtige Phrasen in diesem Dokument?“ oder „Welche Dokumente ähneln diesem Dokument und warum?

    Die semantische Suche ist eine Erweiterung der Volltextsuche, die extra für volltextindizierte Spalten aktiviert wird. Das geht in T-SQL (durch Angabe einer Sprach-ID und des Schlüsselworts Statistical_Semantics an der volltextindizierten Spalte) oder in der grafischen Volltextindex-Oberfläche:

    SemanticSearchIndex

    Damit das klappt muss allerdings zuerst die semantische Suche konfiguriert werden. Dazu wird zuerst die semantische Sprachstatistik-Datenbank installiert, indem man das Paket SemanticLanguageDatabase.msi vom Installationsmedium entpackt und die entpackte Datenbank an den Server anhängt. Danach muss die Datenbank noch mittels sp_fulltext_semantic_register_language_statistics_db registriert werden. Wie das geht findet sich hier.

    Die unterstützten Sprachen kann man dann mit

    select * from sys.fulltext_semantic_languages

    herausfinden. Deutsch ist dabei. Die eigentlichen semantischen Daten in dieser Datenbank sind übrigens als Internal Tables abgelegt und somit nicht direkt für ein SELECT zugänglich.

    Danach kann man wie oben angegeben den Volltextindex mit semantischer Suche erstellen. Ich habe das auf der Filetable gemacht, deren Erstellung ich in diesem Artikel beschrieben habe. Es muss aber keine Filetable sein, jede volltextindizierte Spalte einer Tabelle funktioniert. Zu beachten ist, dass die semantische Suche einen Volltextindex deutlich vergrößert und auch die Erstellungszeit erhöht. Daher sollte man semantische Suche nur aktivieren, wenn man sie auch wirklich verwenden will. Außerdem muss natürlich die Volltextindizierung für die in der Tabelle vorhandenen Dokumenttypen vorbereitet sein: Die entsprechenden IFilter müssen installiert sein, deren Verwendung aktiviert usw.

    Schlüsselwörter finden

    Nun kann man zum Beispiel für ein Dokument herausfinden, was die statistisch wichtigen Schlüsselwörter in diesem Dokument sind. Das geht über die Funktion SEMANTICKEYPHRASETABLE:

    DECLARE @DocID hierarchyid

     

    SELECT @DocID = path_locator from MeineFiletable where name = 'ADS.pptx';

     

    --Key Phrases

    SELECT TOP(10) KEYP_TBL.keyphrase

    FROM SEMANTICKEYPHRASETABLE

        ( MeineFiletable,

          file_stream,

          @DocID

        ) AS KEYP_TBL

    ORDER BY KEYP_TBL.score DESC;

    keyphrase

    sql

    azure

    verwaltung

    technet

    durch

    datacenter

    tds

    isv

    unternehmen

    arten

    Offensichtlich habe ich hier also über SQL Azure gesprochen.

    Anders herum kann man auch herausfinden, in welchen Dokumenten es um Azure geht indem man die Dokumente nach Signifikanz der Phrase „Azure“ sortieren lässt:

    SELECT TOP (5) DOC_TBL.path_locator.ToString() Locator, DOC_TBL.name

    FROM MeineFiletable AS DOC_TBL

        INNER JOIN SEMANTICKEYPHRASETABLE

        ( MeineFiletable,

          file_stream

        ) AS KEYP_TBL

    ON DOC_TBL.path_locator = KEYP_TBL.document_key

    WHERE KEYP_TBL.keyphrase = 'azure'

    ORDER BY KEYP_TBL.Score DESC;

     

    Locator

    name

    /163317661833190.115726554008670.1866003634/
    218988078402337.61914970700195.3199820884/

    DatabaseProAzureReporting.docx

    /235419278667080.230118955961229.3763918334/
    95176762753143.43209610854162.380882874/

    Webcast SQL Azure und die Microsoft Cloud Plattform.pptx

    /235419278667080.230118955961229.3763918334/
    195400071903089.254316101152370.2453146947/

    Webcast SQL Azure Überblick.pptx

    /235419278667080.230118955961229.3763918334/
    204734086686021.60759175188448.1218421407/

    SQL Azure und die Microsoft Cloud Plattform.pptx

    /163317661833190.115726554008670.1866003634/
    148065100657714.221322731028740.4247534163/

    SQL Azure CeBIT.pptx

    Ähnliche Dokumente finden

    Der andere Anwendungsfall für die statistische semantische Suche ist es, ähnliche Dokumente zu finden. Das geht über die Funktion SEMANTICSIMILARITYTABLE. Details zur Ähnlichkeit erhält man über SEMANTICSIMILARITYDETAILSTABLE. Eine einfache Abfrage “Welche Dokumente sind diesem ähnlich“ funktioniert so:

    SELECT   mft.name, sst.score 

    FROM SEMANTICSIMILARITYTABLE

      ( MeineFiletable,

        file_stream,

        @DocID

      ) AS sst

    INNER JOIN MeineFiletable mft

      ON path_locator = matched_document_key 

    ORDER BY score DESC

    Name

    Score

    Webcast SQL Azure Überblick.pptx

    0,6667337

    SQL Azure CeBIT.pptx

    0,6150579

    sqldays 2010 SQL Server 2008 R2 NonBI.pptx

    0,3872314

    SQL Server 2005 - Webcast - 2005-09-28 - Schutz sensitiver Daten.ppt

    0,3602501

    Was ist SQL Server Express 2008 R2.pptx

    0,3286014

    Will man dann den Grund für die Ähnlichkeit finden so joint man über SEMANTICSIMILARITYDETAILSTABLE:

    DECLARE @DocIDMatch hierarchyid

     

    SELECT @DocIDMatch = path_locator

    FROM MeineFiletable

    WHERE name = 'SQL Server 2005 - Webcast - 2005-09-28 - Schutz sensitiver Daten.ppt';

     

    SELECT TOP(20) V4.keyphrase, V4.score

    FROM SEMANTICSIMILARITYDETAILSTABLE

      ( MeineFiletable,

        file_stream,

        @DocID,

        file_stream,

        @DocIDMatch

      ) AS V4

    ORDER BY V4.score DESC;

    keyphrase

    score

    sql

    0,6196678

    technet

    0,4326765

    server

    0,3456945

    verschlüsselung

    0,3421064

    durch

    0,3254796

    schlüssel

    0,3249941

    wird

    0,2818047

    datum

    0,2744119

    zertifikat

    0,2636287

    public

    0,2460675

    arten

    0,2402729

    kosten

    0,2268401

    master

    0,2166911

    passwort

    0,2148199

    zum

    0,2144909

    microsoft

    0,2132909

    authentifizierung

    0,2127908

    symmetrisch

    0,21237

    immer

    0,2091359

    gmbh

    0,2083207

    Offensichtlich geht es also in beiden Präsentationen um mein Lieblingsthema Verschlüsselung…

    In Summe kann die neue semantische Suche in SQL Server „Denali“ sehr umfassend beim Verständnis von Dokumentbeständen und der inhaltlichen Suche darin helfen und so die meisten dokumentorientierten Datenbankanwendungen deutlich aufwerten.

    Die Dokumentation zur semantischen Suche findet sich hier, der Download der Denali CTP3 hier

    Gruß,
    Steffen

  • SQL Server “Denali” CTP3 ist verfügbar

    Die aktuelle Community Technical Preview 3 (CTP3) von SQL Server “Denali” ist verfügbar. Diese Version hat “Production Quality”, kann also für reale Testszenarien incl. Upgrade-Tests verwendet werden.

    Die Neuerungen in SQL Server “Denali” gliedern sich unter drei wesentlichen Themen

    • “Mission Critical Confidence” bedeutet, dass SQL Server “Denali” Performance und Verfügbarkeit für die größten geschäftskritischen Anwendungen bei niedrigen Betriebskosten bietet. Dazu gehört das Erreichen der benötigten 9en mit AlwaysOn oder hochperformante Data Warehouse Abfragen mit Columnstore Indizes
    • “Breakthrough Insights” bezieht sich auf die vielen Neuerungen, die die Marktführerschaft im BI-Bereich (z.B. laut Gartner Magic Quadrant BI Platform, Jan. 2011) ausbauen. Dazu gehört die interaktive webbasierte Datenanalyse mit Project “Crescent” oder die Sicherung der Datenqualität mit Data Quality Services
    • “Cloud on your Terms” bedeutet schließlich, dass der Kunde freie Wahl hat, inwieweit er in die Cloud gehen will: von der klassischen On-Premise Lösung über Private Cloud bis zur Public Cloud mit SQL Azure ist alles auf der Basis von SQL Server Technologie unterstützt. Mit “Juneau” und den Verbesserungen bei den DAC Paketen ist auch eine einheitliche Entwicklung über alle Szenarien möglich.

    Gegenüber der ersten CTP von November 2010 gibt es eine Vielzahl von Neuerungen, hier die Details:

    Relationale Datenbank

    • Columnstore Indizes. Darüber habe ich hier schon geschrieben. Dieser neue spaltenbasierte Indextyp beschleunigt Data Warehouse Abfragen erheblich
    • FileTable ermöglicht den Zugriff auf SQL Server Filestream Daten direkt über das Dateisystem
    • Semantische Suche ermöglicht Volltextabfragen nach Ähnlichkeit (“Gib mir Dokumente, die diesem hier ähnlich sind”, “Sage mir, worin sich diese zwei Dokumente ähneln”)
    • Bis zu 15000 Partitionen pro Tabelle
    • Höhere Performance und mehr Funktionalität (Circular Arc, gesamte Erde) für geografische Datentypen
    • Performanceverbesserungen bei Filestream und Volltextsuche
    • Unterstützung von Windows Server Core
    • Neue Entwicklungsumgebung Project “Juneau” – ermögliche einheitliche Entwicklung für SQL Server, BI und SQL Azure
    • Sicherheitsverbesserungen: Benutzerdefinierte Serverrollen, verbessertes Auditing, Standardschema für Windows-Gruppen
    • Powershell 2.0, Implementation als PowerShell Modul statt als Minishell, PowerShell für Analysis Services und PowerPivot für SharePoint
    • LocalDB für SQL Server Express
    • Database Recovery Advisor macht komplexe Restore-Vorgänge (wie Point in Time Recovery) einfacher
    • AlwaysOn Verbesserungen gegenüber der ersten CTP (müssen teilweise noch über Trace Flag 9532 freigeschaltet werden da dieser Teil der CTP noch nicht “Production ready” ist)
      • bis zu 1 primäre und 4 sekundäre Repliken, davon bis zu insgesamt drei synchrone
      • Failover: automatisch, geplant manuell, erzwungen manuell
      • Backups von sekundären Repliken
      • Unterstützung von Filestream, FileTable, RBS sowie viele andere Verbesserungen

    Data Quality Services

    • Das ist eine neue Komponente von SQL Server, die die Datenqualität durch Verfahren wie Data Clensing und Data Matching entscheidend verbessern kann. DQS kann eigenständig oder innerhalb eines SSIS Datenflusses ausgeführt werden

    BI Development Studio

    • Beruht jetzt auf Visual Studio 2010

    Integration Services

    • Der größte Teil der Neuerungen in SSIS war bereits in der CTP1 vorhanden (SSIS Server, Projektverwaltung, Parameter)
    • Es gibt in der neuen CTP eine Vielzahl von Detailverbesserungen, wie Tutorials in BIDS, besser strukturierte .dtsx-Dateien für Vergleichstools, Standardberichte in SQL Server Management Studio für SSIS, verschiedene Stored Procedures für die Performanceanalyse

    Analysis Services

    • Die größte Neuerung ist ein neuer, spaltenbasierter Speichermodus basierend auf der VertiPaq Engine (die zuerst mit PowerPivot eingeführt wurde). Eine Analysis Services Instanz verwendet entweder das tabellarische oder das multidimensionale Modell, das wird bei der Installation der Instanz festgelegt.
    • Daneben gibt es auch Verbesserungen für das multidimensionale Modell, insbesondere eine skalierbarere String-Speicherung und die Unterstützung von Tabellen mit mehr als 2 Milliarden Zeilen
    • Für PowerPivot gibt es einige neue DAX-Funktionen sowie Erweiterungen bei der Administrationsschnittstelle in SharePoint

    Reporting Services

    • Project “Crescent” ist ein neues, hochgradig interaktives Datenanalyse-Werkzeug, mit dem Fachanwender rein webbasiert (Silverlight) per Drag & Drop eigene Analysen erstellen können – und das in Schön! In der aktuellen CTP3 kann Crescent nur auf tabellarischen Analysis Services Modellen aufsetzen
    • Der SharePoint Mode von Reporting Services (und damit auch “Crescent”) ist jetzt als SharePoint Shared Service implementiert. Das verbessert sowohl die Verwaltung als auch die Skalierbarkeit von Reporting Services im SharePoint Mode. Auch Claims Authentication wird (abhängig von der Datenquelle) damit unterstützt.
    • Mit den neuen Data Alerts können Endbenutzer sich über wichtige Änderungen in Berichten informieren lassen, z.B. wenn eine bestimmte Zahl in einem Bericht einen Schwellwert über- oder unterschreitet
    • Der Word- und der Excel-Renderer geben die Berichte jetzt im Office 2007/2010 Format aus (xlsx/docx). Das ermöglicht das Rendern größerer Berichte insbesondere nach Excel. Ein Export in die alten Formate (xls/doc) ist ebenfalls noch möglich, muss aber in rsreportserver.config aktiviert werden.

    Master Data Services

    • Es gibt eine neue Excel-Oberfläche zur Verwaltung der Stammdaten
    • Integration mit Data Quality Services
    • Neues Benutzerinterface
    • Installation ist Teil der SQL Server Installation

    Wie man sieht gibt es also viel zu testen!

    Hier meine Denali-Ressourcen

    Und schließlich die Downloads und anderen Informationen:

    Gruß,
    Steffen

  • Volltextfeatures in SQL Server “Denali” Teil 1: Eigenschaftssuche und NEAR

    In meinem Webcast zu SQL Server “Denali” CTP1 habe ich schon über einige Neuerungen bei der Volltextsuche gesprochen. Bevor ich im nächsten Artikel zu einer wichtigen Neuerung komme, die es in CTP1 noch nicht gab (Semantische Suche) möchte ich hier noch mal eine kleine Zusammenfassung der Neuerungen in der Volltextsuche geben, die bereits in CTP1 enthalten waren:

    Eigenschaftssuche (Property Search)

    Diese Funktion ermöglicht die Suche nach Dokumenteigenschaften (Titel, Autor usw.), insbesondere in Office-Dokumenten. Damit das funktioniert muss zuerst eine Search Property List angelegt werden (mit CREATE SEARCH PROPERTY LIST), die die zu suchenden Eigenschaften enthält. Dazu müssen die Eigenschaften über ihre GUID (die man z.B. aus der MSDN Dokumentation erhält) geladen werden:

    ALTER SEARCH PROPERTY LIST DocumentTablePropertyList

       ADD 'Title'

       WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 2,

          PROPERTY_DESCRIPTION = 'System.Title - Title of the item.' );

    Diese Search Property List wird dann einem Volltextindex zugeordnet:

    ALTER FULLTEXT INDEX ON Production.Document SET SEARCH PROPERTY LIST DocumentTablePropertyList;

    Außerdem müssen natürlich die IFilter für die jeweiligen Dokumenttypen installiert sein, und zwar je nach Serverversion in 32 oder 64 Bit. Die IFilter für die Office 2007/2010 Dateiformate findet man hier (nach der Installation den Server neu starten!). Darüber hinaus muss die Verwendung der IFilter in SQL Server aktiviert werden (EXEC sp_fulltext_service load_os_resources, 1)

    Nach dem Hinzufügen der Eigenschaften wird der Volltextindex neu aufgebaut. Danach kann man nach Dokumenteigenschaften suchen:

    SELECT Document FROM Production.Document

      WHERE CONTAINS(PROPERTY(Document,'Author'), 'Steffen');

    Anpassbares NEAR

    Bisher tat das Prädikat NEAR in der Volltextsuche nicht wirklich das, was man erwartet: Es definierte nämlich lediglich, dass die zwei (oder mehr) Begriffe im selben Dokument vorhanden sein müssen, keineswegs dass sie sich auch tatsächlich in einem bestimmten Abstand zueinander befinden müssen. Lediglich auf den Rang des Dokuments in der Ergebnisliste wirkte sich die Nähe der Suchbegriffe aus.

    In SQL Server Denali kann man jetzt genau festlegen, wie nahe die Suchwörter sein sollen. So wird hier nach “rear” und “left” mit maximal 3 Worten dazwischen gesucht:

    SELECT DocumentNode, DocumentSummary, Document

           FROM Production.Document AS DocTable INNER JOIN

           CONTAINSTABLE(Production.Document, Document, 'NEAR((left, rear), 3)' ) AS KEY_TBL

           ON DocTable.DocumentNode = KEY_TBL.[KEY];

    Es ist auch möglich nach mehr als zwei Begriffen zu suchen, dann gibt die Zahl die maximale Anzahl Nicht-Suchbegriffe zwischen dem ersten und dem letzten Suchbegriff an. Die Reihenfolge der Begriffe im Dokument ist nicht wichtig, kann aber mit einem angehängten TRUE erzwungen werden: NEAR((left, rear), 3, TRUE).

    Performance

    Neben funktionalen Neuerungen in der Volltextsuche wurde auch stark an der Geschwindigkeit und Skalierbarkeit gearbeitet. Ziel ist es, mindestens 100 Millionen Dokumente in einem Volltextindex zu unterstützen. Meine ersten Versuche mit einer Tabelle mit 20 Millionen Zeilen und 19 Volltext-indizierten Spalten waren sehr vielversprechend: ein Satz aus 22 Abfragen hat nur 7-10 Sekunden gebraucht – auf meinem (schnellen) Laptop.

    Wichtig ist dabei die Formulierung der Abfragen. Die Abfrage

    SELECT '"hemoglob*"', COUNT(*) FROM ft_publications WHERE CONTAINS (*, '"hemoglob*"')

    führt zu einem Join zwischen der Basistabelle und dem Volltextindex, was die Abfrage bei großen Ergebnismengen langsam macht. Die inhaltlich gleichwertige Abfrage

    SELECT '"hemoglob*"', COUNT(*) FROM CONTAINSTABLE (ft_publications, *, '"hemoglob*"')

    ist hingegen unabhängig von der Anzahl gefundener Dokumente schnell (auf meinem Rechner im zweistelligen Millisekundenbereich). Das gilt übrigens auch mit früheren Versionen von SQL Server

    Im nächsten Artikel wird es dann um die semantische Suche gehen

    Gruß,
    Steffen

  • FileTable in SQL Server “Denali”–Dateizugriff auf SQL Server Filestream Daten von jeder Anwendung

    Eines der spannenden neuen Features von SQL Server 2008 war Filestream – die Möglichkeit, BLOBs wie Dokumente, Videos oder Bilder unter SQL Server Kontrolle im Dateisystem abzulegen. Mit Filestream kann man gleichzeitig die Datenbankdateien klein halten, die Performance beim Zugriff auf große BLOBs erhöhen und volle Konsistenz zwischen BLOB-Daten und relationalen Daten gewährleisten, sowohl in Transaktionen als auch im Backup.

    Der offensichtliche Nachteil von Filestream in SQL Server 2008 ist aber, dass man mit normalen Anwendungen, die nichts von SQL Server wissen nicht darauf zugreifen kann. Der Zugriff auf Filestream BLOB-Daten musste entweder über T-SQL oder über ein spezielles WIN32 oder .NET API erfolgen. Viele Kunden haben daher nach einer Lösung gefragt, die traditionellen Dateizugriff aus Anwendungen wie Word oder dem Windows Explorer mit SQL Server Features wie vollständige Backups und Volltextsuche kombiniert. Daher gibt es in SQL Server Denali das neue Konzept “Filetable”

    Eine Filetable ist kurz gesagt eine Tabelle mit einem festen Schema, die Dokumente speichert, welche über normalen Windows-Dateizugriff von jedem Windows-Programm aus zugegriffen werden können. Dieselben Dokumente sind also einerseits aus T-SQL als Zeilen einer Tabelle verfügbar, andererseits aus dem Dateisystem als normale Dateien.

    Wenn man Filetables nutzen will muss man zuerst wie gewohnt Filestream aktivieren und eine Filestream-Dateigruppe in der Datenbank anlegen. Diese Filestream-Dateigruppe zeigt auf ein Verzeichnis und legt den physischen Speicherplatz für die Dateien der Filetable fest – nicht jedoch den logischen, über den später aus dem Explorer zugegriffen wird.

    Als nächstes muss man in der Datenbank “nicht-transaktionalen Zugriff” zulassen, entweder komplett oder read only. Das geht in T-SQL:

    ALTER DATABASE SemanticSearch
           SET FILESTREAM (NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'SematicsDir')

    oder in der Oberfläche:
    FileTableNonTransactUI

    Die Bezeichnung “nicht-transaktionaler Zugriff” besagt schon worum es geht: Alle Zugriffe auf die Filetable, die aus dem Dateisystem erfolgen (über den Explorer oder über Anwendungen) sind nicht transaktional. Sie können also weder durch ein Rollback rückgängig gemacht werden noch ist ein exakt konsistentes Point-in-Time Restore garantiert. Wichtig ist: Auch bei aktiviertem nicht-transaktionalen Zugriff gilt das nur, wenn die Daten über den Windows Fileshare zugegriffen werden. Jeglicher Zugriff über T-SQL oder das Filestream API ist voll transaktional.

    Nun kann man Filetables anlegen. Das geht derzeit nur in T-SQL (wobei Management Studio eine Vorlage ausgibt bei der man nur noch die Parameter ausfüllen muss):

    CREATE TABLE dbo.MeineFiletable AS FILETABLE

      WITH

      (

        FILETABLE_DIRECTORY = 'MeineFTDir',

        FILETABLE_COLLATE_FILENAME = database_default

      )

    GO

    Wie man sieht ist kein Schema der Tabelle angegeben. Das Schema einer Filetable ist fest, es können weder Spalten hinzugefügt noch geändert oder gelöscht werden. Aber es können zum Beispiel Trigger hinzugefügt werden – und Volltextindizes, aber dazu mehr im nächsten Artikel. Im Filetable Schema sind die Windows Dateieigenschaften (Readonly, Archiv usw) als Spalten vorhanden. Der Pfad (relativ zum Wurzelverzeichnis, das \\maschinenname\instanzname\DIRECTORY_NAME\FILETABLE_DIRECTORY ist) findet sich im Feld path_locator (Typ Hierarchyid), die eigentliche Datei im Feld file_stream. Im Management Studio befinden sich Filetables in einem eigenen Ordner in der Datenbank:

    FileTableUI1

    Von hier aus kann man auch einfach den Dateisystem-Ordner öffnen:

    FileTableUI2

    FileTableUIExplorer

    In diesen Ordner kann man nun ganz normal Dateien hineinkopieren, sie bearbeiten, löschen usw. Aus T-SQL Sicht sieht jede Datei und jeder Unterordner aus wie eine Zeile:

    SELECT name, file_stream.GetFileNamespacePath(), is_directory FROM MeineFiletable

    FileTableOutput

    Den vollständigen Pfad der Dateien erhält man so:

    SELECT  FileTableRootPath() + file_stream.GetFileNamespacePath() AS FilePath FROM MeineFiletable

    Man kann auch über T-SQL Die Einträge bearbeiten, z.B. neue Verzeichnisse anlegen oder Dateien Read Only setzen:

    INSERT INTO MeineFiletable(name, is_directory) VALUES ( 'Analysis Services', 1)


    UPDATE
    MeineFiletable
    SET is_readonly = 1 WHERE name = 'QuoVadis.pptx'

    Zum Verschieben von Dateien muss man sich aber schon ein wenig mit Hierarchyid-Funktionen auskennen (Danke an Georg Urban):

    UPDATE MeineFiletable

    SET    path_locator = path_locator.GetReparentedValue( path_locator.GetAncestor(1),

           (SELECT path_locator FROM MeineFiletable WHERE name = 'Cloud' AND is_directory = 1))

    WHERE (name = 'QuoVadis.pptx')

    Und natürlich kann man auch die eigentliche Datei aus T-SQL bearbeiten.

    Insgesamt bieten Filetables in SQL Server “Denali” eine mächtige Kombination aus T-SQL und klassischem Dateisystem-Zugriff und erlauben die Nutzung von datenbankbasierten Dokumenten von jedem Windows-Programm aus. Filetables werden in der kommenden CTP von SQL Server “Denali” enthalten sein.

    Gruß,
    Steffen

  • Columnstore Indizes in SQL Server “Denali”

    Eine der wichtigern Neuerungen im Data Warehouse Bereich die mit SQL Server “Denali” kommen wird sind Columnstore Indizes. Diese Indizes können Data Warehouse Abfragen über große Datenmengen sehr stark beschleunigen, oft um den Faktor 10 oder mehr.

    In traditionellen Indizes, auch in Clustered Indizes und Tabellen ohne Index (Heaps) sind die Daten zeilenweise in einer Baumstruktur gespeichert. In den Blättern dieses Baumes stehen also Zeile für Zeile alle Spalten, die im Index enthalten sind. Das geschieht normalerweise unkomprimiert, bei der Verwendung von Datenkompression auch pro Datenseite komprimiert.

    Soll nun, wie in Data Warehouses üblich, eine große Aggregation gebildet werden wie diese:

    SELECT SUM(umsatz_vk_brutto) 
    FROM Artikelbewegung INNER JOIN Artikel 
    ON Artikelbewegung.Art_nr = Artikel.Art_Nr
    WHERE Artikel.Produktgruppe = 'AfG'

    so muss der Index der Faktentabelle Artikelbewegung(sofern er alle benötigten Felder, hier also Art_Nr, VK_Brutto enthält, sonst die ganze Tabelle) über seine Baumstruktur durchsucht und dann zeilenweise gelesen werden um die benötigten Zeilen auszufiltern. Enthält der Index oder die Tabelle mehr Spalten als für die Abfrage benötigt werden so werden diese nicht benötigten Werte ebenfalls gelesen und dann ignoriert. Danach werden die VK_Brutto Werte aufsummiert.

    Bei einem Columnstore Index werden die Daten in hochkomprimierter Form spaltenweise gespeichert. Das bedeutet, dass jede Spalte im Index einzeln gespeichert und komprimiert wird. Durch die in denormalisierten Data Warehouses typische hohe Ähnlichkeit der Werte in einer Spalte werden hier sehr hohe Komprimierungen erreicht. Das bedeutet, dass die von Disk zu lesenden Datenmengen deutlich geringer sind als bei traditionellen Indizes. Bei einer Abfrage werden dann auch nur die in der Abfrage enthaltenen Spalten von der Platte gelesen, was zusätzlich IO und Verarbeitungszeit einspart.

    Die Columnstore Technologie basiert auf derselben Basis (Vertipaq) die derzeit auch schon in PowerPivot verwendet wird.

    Schauen wir uns das Ergebnis der Verarbeitung mal für eine Abfrage an:

    SELECT k.Jahr, f.Einzugsbereich, ar.Produktgruppe, SUM(a.Teile_Ges) Teile, SUM(a.umsatz_vk_brutto) Umsatz
    FROM Artikelbewegung a INNER JOIN Kalender k ON a.Datum = k.Datum
    INNER JOIN artikel ar ON a.Art_Nr = ar.Art_Nr
    INNER JOIN Filialen f ON a.Filial_Nr = f.Filial_Nr
    GROUP BY k.Jahr, f.Einzugsbereich, ar.Produktgruppe
    ORDER BY k.Jahr, ar.Produktgruppe, f.Einzugsbereich

    Ohne Column Store Index wird hier, da die ganze Tabelle aggregiert wird, ein Table Scan gemacht. CSTableScan

    IO-Kosten:

    Artikelbewegung-Tabelle. Scananzahl 9, logische Lesevorgänge 25898

    CPU-Kosten:

    SQL Server-Ausführungszeiten:
    CPU-Zeit = 33413 ms, verstrichene Zeit = 5229 ms

    Mit Column Store Index werden nur die benötigten Spalten in komprimierter Form gelesen, die Tabelle selbst wird nicht gelesen:

    CSColstore

    Schon am geringeren Anteil an den Gesamtkosten der Abfrage sieht man den Effekt des Columnstore. Und auch in Zahlen drückt sich das aus:

    IO-Kosten:

    Artikelbewegung-Tabelle. Scananzahl 8, logische Lesevorgänge 4520

    CPU-Kosten:

    SQL Server-Ausführungszeiten:
    CPU-Zeit = 2103 ms, verstrichene Zeit = 902 ms

    Die Abfrage ist also insgesamt um mehr als den Faktor 5 schneller geworden, hat nur rund 6% (!) der CPU Zeit verbraucht und das Lesen des Column Store hat nur 17% der IO-Vorgänge gebraucht. Das alles bei einer recht kleinen Faktentabelle (nur ca. 4 Millionen Zeilen), bei großeren Tabellen ist der Effekt noch deutlich größer.

    Wichtig ist, dass sich Columnstore Indizes nur für Data Warehouse Szenarien eignen wo große Aggregationen, vor allem Summierungen über große Datenmengen gebildet werden.

    Ein Columnstore Index macht die Tabelle, auf der er erstellt wurde Read Only. Daher gibt es nur zwei Möglichkeiten, Daten in der Basistabelle zu ändern

    1.: Columnstore Index löschen, Daten anfügen, Columnstore Index neu erstellen

    oder

    2. Partitionsumschaltung: Tabelle gleicher Struktur erstellen, Daten laden, Columnstore Index auf neue Tabelle erstellen, neue Tabelle als Partition in vorhandene Tabelle hineinschalten

    Die Syntax für die Erstellung von Columnstore Indizes ist fast dieselbe wie für traditionelle Nonclustered Indizes:

    CREATE NONCLUSTERED COLUMNSTORE INDEX [IX_Artikelbewegung_ColumnStore] ON [dbo].[Artikelbewegung]
    (
        [Datum],
        [Filial_Nr],
        [Art_Nr],
        [Gebinde_Ges],
        [Teile_Ges],
        [Umsatz_VK_brutto],
        [Umsatz_vk_netto]
    )WITH (DROP_EXISTING = OFF) ON [PRIMARY]

    und auch eine schöne Oberfläche gibt es dafür:
    CSEdit

    Columnstore Indizes werden in der kommenden SQL Server “Denali” CTP enthalten sein. Anmeldungen dafür unter http://www.sqlserverlaunch.com

    Gruß,
    Steffen

  • Private Cloud mit SQL Server – wie geht das?

    clip_image003Cloud Computing ist in aller Munde, und auch wenn die Public Cloud mit Windows Azure und SQL Azure die höchsten Potenziale für Effizienz, Kosteneinsparung und Elastizität bringt entscheiden sich viele Kunden derzeit für den Aufbau einer Private Cloud für ihre Unternehmensanwendungen. Die Gründe dafür sind vielfältig, vom Wunsch, die Daten im eigenen Haus zu behalten über Features, die derzeit in SQL Azure nicht unterstützt werden bis zur Flexibilität, bestehende Anwendungen mit geringen Anpassungen weiter zu betreiben.

    Der Vorteil von SQL Server ist nun, dass den Kunden alle Wahlmöglichkeiten von „keine Cloud“ bis „Public Cloud“ zur Verfügung stehen:

    1. Angepasste Installation auf eigener Hardware
    2. Angepasste Installation in Hyper-V oder einer anderen Virtualisierungsumgebung
    3. Verwendung einer vorkonfigurierten Appliance
    4. Aufbau einer Private Cloud
    5. Nutzung der Public Cloud mit SQL Azure

    In diesem Artikel soll es nun darum gehen, wie ein Private Cloud Projekt mit SQL Server (auch unter dem Titel „Database as a Service“ – DaaS bekannt) aussieht. Dabei geht es mir hier vor allem um den Projektablauf und die einzelnen Schritte. Einen Überblick über die verwendeten Technologien haben Frank Koch und ich bereits im Artikel „Was ist eine Private Cloud und was brauche ich dafür?“ gegeben.

    Ein SQL Server Private Cloud Projekt besteht aus 4 Stufen, die eigene Werkzeuge und Vorgehensweisen erfordern und eigene Vorteile bringen:

    clip_image005

    1. Resource Pooling (Zusammenfassen von Ressourcen)
    2. Elasticity (Elastizität)
    3. Self-Service (Selbstbedienung)
    4. Control & Customize (Überwachung und Anpassung)

    Stufe 1: Resource Pooling

    Beim Zusammenfassen der Ressourcen geht es zuerst einmal darum festzustellen, was eigentlich alles in die Private Cloud konsolidiert werden soll und darauf aufbauend eine konsolidierte virtualisierte SQL Server Umgebung aufzubauen. Als Ergebnis dieser Stufe laufen alle (soweit möglich) verteilten Datenbankinstallationen in einer zentral verwalteten virtualisierten Umgebung und werden dort einheitlich administriert. Das senkt die Betriebskosten, erleichtert den Administratoren die Arbeit und ist die Basis für jede Compliance-Lösung.

    Diese Stufe in vier Teilschritte unterteilen

    1a: Untersuchung der bestehenden Umgebung und Kapazitätsplanung

    Zuerst einmal muss festgestellt werden, welche Datenbanken in welchen Versionen es eigentlich im Unternehmen gibt und welche davon Kandidaten für eine Konsolidierung sind. Dazu gibt es zwei wesentliche Werkzeuge: das „Microsoft Assessment and Planning (MAP) Toolkit 5.5“ und das „Microsoft Consolidation Planning Tool for SQL Server v1.0 (CPT)“.

    clip_image007Mit dem MAP Toolkit kann man vorhandene SQL Server Installationen (und, wenn gewünscht, Oracle, MySQL und Sybase-Installationen) im gesamten Netzwerk erkennen und erhält daraufhin Berichte, die eine umfassende Darstellung der vorhandenen Datenbank-Infrastruktur sowie Konsolidierungsempfehlungen enthalten. Das CPT ist darauf aufbauend ein Excel-Addin, das Konsolidierungsempfehlungen auf Basis des Ressourcenverbrauchs von SQL Server Instanzen gibt. Im Ergebnis dieses Schrittes hat man einen Überblick über die eigene Datenbank-Landschaft und bereits einen Eindruck, welche vorhandenen Datenbanken konsolidiert werden sollen.

    Auf Basis dieser Empfehlungen sollte dann eine Kapazitätsplanung erfolgen: Welche Hardware, Software (für SQL Server empfiehlt sich aufgrund der Lizenzbedingungen häufig eine Enterprise oder Data Center Edition für Konsolidierungen) und Verwaltungswerkzeuge werden benötigt? Wie groß wird meine SQL Server Private Cloud? Zur Vereinfachung der Lösungsplanung wird es bald die „Database Consolidation Reference Architecture“ von Microsoft geben, und im zweiten Halbjahr erscheint die optimierte „Database Consolidation Appliance“ zuerst von HP, später auch von anderen Hardwarepartnern.

    1b. Konsolidierung

    Als nächster Schritt sollte soweit wie möglich die vorhandene Infrastruktur aus verschiedenen SQL Server Editionen und Versionen und anderen Datenbanksystemen auf einen einheitlichen, aktuellen Stand gehoben werden damit später Verwaltung, Patching und Entwicklung auf einer gemeinsamen Basis erfolgen können. Dazu sollten vorhandene SQL Server Installationen mit dem Upgrade Advisor auf eventuelle Kompatibilitätsprobleme untersucht werden. Für andere Datenbanken wie Oracle, MySQL, Sybase oder sogar Microsoft Access kann man mit dem SQL Server Migration Assistant (SSMA) abschätzen, wie hoch der Aufwand für eine Migration auf SQL Server ist.

    1c. Planung der Migration

    Je nach Ergebnis der vorigen Schritte wird nun entschieden, wie mit den vorhandenen Datenbanken umgegangen wird. Es gibt 4 Möglichkeiten für jede einzelne Datenbankumgebung:

    1. Beibehaltung der bestehenden physischen Infrastruktur. Das kann bei sehr stark ausgelasteten Maschinen sinnvoll sein oder wenn vom Hersteller der Anwendung keine Freigabe für andere Betriebsmodelle besteht
    2. 1:1 Überführung der bestehenden physischen Maschine in eine virtuelle Maschine (P2V). Das ist insbesondere dann sinnvoll, wenn kein Upgrade auf eine aktuelle SQL Server Version möglich oder sinnvoll ist oder wenn die Anwendung zwingend eine eigene Betriebssystemumgebung erfordert – in diesem Fall ist evtl. wenigstens ein Upgrade auf ein aktuelles Betriebssystem und eine aktuelle SQL Server Version möglich.
    3. Migration auf eine eigene Instanz in einem virtualisierten SQL Server. Das bietet sich an, wenn eine Anwendung Anforderungen wie besondere Rechte oder eine hohe tempdb-Auslastung hat
    4. Migration auf eine konsolidierte virtuelle SQL Server Instanz. Das ist die geeignete Methode für alle Datenbanken, die keine besonderen Anforderungen stellen und bringt die höchste Effizienzsteigerung mit sich.

    1d Virtualisierung und Verwaltung der Instanzen

    imageHier werden nun tatsächlich die vorher geplanten Schritte umgesetzt und die neue virtuelle Umgebung auf Basis von Hyper-V (empfohlen: Windows Server 2008 R1 SP1 – wegen Dynamic Memory) und System Center Virtual Machine Manager 2008 R2 (SCVMM) erstellt. Die P2V-Migration übernimmt dabei der SCVMM, die Datenbankmigration erfolgt mit SQL Server Mitteln. Zusätzlich sollte ein Überwachungswerkzeug für SQL Server und Windows eingesetzt werden: System Center Operations Manager (SCOM) (siehe unten)

    Als Gesamtergebnis dieses Schritt 1 hat man eine virtualisierte, konsolidierte Umgebung die einheitlich und zentral betrieben und verwaltet wird.

    Stufe 2: Elasticity

    Die nächste Stufe ist es, die Umgebung elastisch zu machen, das heißt, eine dynamische Lastverteilung zwischen den einzelnen Instanzen und somit eine gesteigerte Skalierung zu erreichen. So ganz nebenbei wird dabei auch das Thema Hochverfügbarkeit geklärt.

    Zuerst beschäftigt man sich hier mit dem Thema Hochverfügbarkeit für die einzelnen Datenbanken oder SQL Server Instanzen. Dazu kann SQL Server Clustering (als Guest Cluster in den virtuellen Maschinen) und/oder Database Mirroring eingesetzt werden. Das ermöglicht im Falle eines Fehlers eine schnelle Wiederherstellung ohne Datenverlust.

    imageDarüber hinaus sollte Hyper-V geclustert werden. Das schützt nicht nur vor dem Ausfall eines Servers sondern ermöglicht auch Live Migration der virtuelle Maschinen. Durch Live Migration können virtuelle Maschinen im laufenden Betrieb von einem Hyper-V Host auf einen anderen verschoben werden. Dadurch ist eine schnelle Verteilung der VMs nach aktueller oder prognostizierter Last über verschiedene physische Hosts möglich. Auch ein Upgrade oder Patching des Hosts ist so durch Verschiebung der virtuellen Maschinen auf einen anderen Host deutlich vereinfacht. Bei Verwendung von SCVMM ist auch ein automatisches Load Balancing für eine optimale Performance der virtuellen Maschinen möglich.

    Eine weitere Möglichkeit der Ressourcenoptimierung ist Dynamic Memory in Windows Server 2008 R2 Service Pack 1 Hyper-V. Dynamic Memory ermöglicht die Zuweisung einer Spanne an Hauptspeicher für jede virtuelle Maschine (etwa: 4 GB Minimum, 12 GB Maximum). Der Hauptspeicher wird dann nach aktueller Last und nach Priorität („Memory Weight“) zwischen den VMs verteilt. Für den Einsatz von SQL Server mit Dynamic Memory empfiehlt sich die Vergabe des Rechts „Lock Pages in Memory“ an das Dienstkonto sowie die Beschränkung des maximalen SQL Server Hauptspeichers über die Einstellung „Max Server Memory“.

    Ergebnis dieser Stufe ist eine hochverfügbare, skalierbare virtuelle Umgebung bei der eine Anpassung der Ressourcenzuteilung basiert auf den aktuellen Anforderungen leicht möglich ist.

    Stufe 3: Self Service

    In dieser Stufe wird die zentrale Infrastruktur so gestaltet, dass die Nutzer (Fachabteilungen, andere IT-Abteilungen,…) selbst über ein Self-Service-Portal standardisierte Datenbankressourcen anfordern können. Das entlastet die zentrale IT-Abteilung und ermöglicht für die Nutzer einen deutlich einfacheren und schnelleren Zugang zu den benötigten Datenbanken. Darüber hinaus bringt die Standardisierung hier Effizienzsteigerungen bei der Pflege und Wartung der Umgebung.

    imageZuerst werden Templates (Vorlagen) für die standardisierten Datenbank-Ressourcen im SCVMM erstellt. Wenn später ein Nutzer eine neue Instanz braucht so wird diese direkt aus der Vorlage erstellt. In dieser Vorlage können auch Skripte eingebunden werden, die notwendige Schritte nach einer Provisionierung ausführen (zum Beispiel die Anmeldung bei SCOM für die automatische Überwachung oder die Einrichtung eines Backup-Jobs)

    Die Basis für das Self Service Portal ist der „System Center Virtual Machine Manager Self-Service Portal 2.0”. Auf diesem Portal bekommen die Benutzer Rechte, bestimmte Ressourcen anzufordern und neue SQL Server Instanzen auf Basis der Templates anzulegen oder später auch zu entfernen. Das Portal enthält auch einen Freigabeprozess, über den die IT die Anforderungen freigeben kann.

    Das Self Service Modell kann je nach Anforderung auch deutlich ausgebaut werden. Sollen zum Beispiel Drittsysteme für Konfiguration, Backup, ITIL-Prozesse oder ähnliches angebunden werden so eignet sich System Center Opalis mit seinen Workflows und den vielen Schnittstellen dazu sehr gut. Soll das Deployment von VMs statt aus Templates flexibler erfolgen so lässt sich eine Basisinstallation + automatisches Softwaredeployment mit System Center Configuration Manager (SCCM) einfach umsetzen.

    Als Ergebnis dieser Stufe können Datenbankressourcen einheitlich und schnell provisioniert und genehmigt werden. Das erhöht die Flexibilität für die Nutzer und entlastet die IT-Abteilung.

    Stufe 4: Control & Customize

    In dieser Stufe wird die einheitliche Provisionierung um eine darauf basierende Abrechnung (charge back) und einen standardisierten Betrieb erweitert.

    clip_image009Für die Abrechnung enthält das Self Service Portal ein Chargeback-Modul, über den die verwendeten Ressourcen den einzelnen Kunden verrechnet werden können. Es gibt vorgefertigte Berichte, die die Nutzung belegen. Soll eine detailliertere Abrechnung auf Basis von tatsächlicher Last oder anderen Faktoren wie Kühlung oder Platzverbrauch erfolgen so ist dies über die Partnerlösung vKernel Chargeback möglich.

     

    clip_image011Mit System Center Operations Manager (SCOM) ist schließlich eine einheitliche Überwachung über die gesamte Umgebung möglich, man kann vom Hyper-V Host über die virtuellen Maschinen bis zum SQL Server mit seinen Komponenten die gesamte Umgebung über ein Werkzeug verwalten. Über Management Packs enthält der SCOM produktspezifisches Wissen und von der Produktgruppe oder auch vom Kunden selbst definierte Regeln. Über die „Performance and Resource Optimization (PRO)“ Management Packs können auch erweiterte Empfehlungen ausgesprochen werden, wie zum Beispiel die Aktualisierung der Integration Components oder das Verschieben einer VM auf einen anderen Host.

    Zusammenfassung

    Durch die Implementierung der vier genannten Stufen einer SQL Server Private Cloud kann eine optimierte, skalierbare, zentral verwaltbare, effiziente und agile Datenbankumgebung aufgebaut werden die die IT entlastet und für die Nutzer einen schnellen, standardisierten Self Service ermöglicht. Jede einzelne Stufe bringt bereits für sich implementiert deutliche Vorteile, mit allen 4 Stufen bekommt man eine vollständige integrierte Lösung auf Basis verfügbarer Produkte

    Weitere Informationen, insbesondere ein Überblicksposter und 2 Präsentationen finden sich auf der SQL Server Private Cloud Seite. Eine Demo der fertigen Umgebung werde ich demnächst als Video auf diesem Blog bereitstellen

    Gruß,
    Steffen Krause

  • Hilfreiche SQL Server Scripts

    Heute mal ein einfach Link auf äußerst hilfreiche SQL Server Scripts.

    Im Microsoft TechNet Script Center finden sich einige sehr hilfreiche SQL bzw. PowerShell Scripts.

    Interessant sind auch die Umfragen die Paul Randal zu verschieden SQL Server Themen in seinem Blog macht.

    http://www.sqlskills.com/BLOGS/PAUL/

    Gruß
    Ralph Kemperdick

  • SQL Server 2008 R2 Reporting Services Berichte Veröffentlichung und Zugriffs-Techniken lernen

    Wenn Sie verstanden haben, wie Berichte zu entwickeln sind, ist der nächste Schritt zu verstehen, wie diese veröffentlicht werden damit Ihre Anwender darauf zugreifen können. Dieser Teil des SQL Server 2008 R2 Business Intelligence Training Kurses ("SQLInsights") auf MSDN, macht Sie mit diesem Thema vertraut. Es behandelt auch die Self-Service-Berichterstellung und den Umgang und die Freigabe von Berichtkomponenten.

    Hier ist ein Überblick über die Inhalte:

    5. Veröffentlichen und den Zugriff auf SQL Server 2008 R2 Reporting Services-Berichte
    Präsentation: Veröffentlichung von SQL Server 2008 R2 Reporting Services-Berichten
    Demo: Veröffentlichung von SQL Server 2008 R2 Reporting Services-Berichten
    Präsentation: Aktivieren des Self-Service Reporting mit SQL Server 2008 R2 Shared-Komponenten
    Demo: Aktivieren der Self-Service Berichterstellung und Veröffentlichung von gemeinsam genutzten SQL Server 2008 R2 Reporting Services Komponenten.
    Präsentation: Zugriff auf SQL Server 2008 R2 Reporting Services-Berichte programmgesteuert
    Demo: Entwicklung von Embedded SQL Server 2008 R2 Reporting Services-Anwendungen
    Hände auf Lab: Erstellen der ersten Reporting Anwendung mit dem Visual Studio 2010 ReportViewer-Steuerelement

    SQLInsights finden Sie auf der Seite MSDN Training und Zertifizierung Ressourcen unter der folgenden URL:

    http://go.Microsoft.com/?linkid=9761002

    Schauen Sie sich die Videos und überprüfen Sie die praktischen Übungseinheiten. Wenn Sie die Demos oder Hands-on Labs auf Ihrem eigenen Computer ausführen möchten, laden Sie diese herrunter und installieren Sie das offline Training Kit. Alle SQLInsights Inhalte finden Sie auf der Getting Started > BI Entwickler -Seite.

    Ein weiterer SQLInsights Kurs, die Einführung in SQL Server 2008 R2 Analysis Services kommt in Kürze. Wir Hoffnung SQLInsights wird Ihnen helfen bei der Entwicklung Ihrer ersten Microsoft BI-Lösung.
    Nochmals vielen Dank für Ihr Interesse an SQL Server 2008 R2!

  • SQL Server 2008 R2 Reporting Services- Berichte entwickeln

    Müssen Sie anspruchsvolle, interaktive Berichte als Bestandteil einer Business Intelligence-Lösung entwickeln? Wenn ja, dann sollten Sie diesen Teil des SQL Server 2008 R2 Business Intelligence Training Kurs ("SQLInsights") auf MSDN anschauen. In nur ein paar Stunden können Sie lernen, wie Sie Ihre ersten Berichte mit Sql Server 2008 r2 Reporting Services entwickeln .

    Hier ist ein Überblick über den Kurs:

    4. Einführung in SQL Server 2008 R2 Reporting Services
    Präsentation: Grundlagen der Berichtserstellung mit SQL Server 2008 R2 Reporting Services
    Präsentation: SQL Server 2008 R2 Reporting Services-Berichtsdesign-Grundlagen
    Demo: Entwicklung eines einfachen SQL Server 2008 R2 Reporting Services-Berichts mit einer relationalen Datenquelle
    Präsentation: Interaktivität Hinzufügen eines SQL Server 2008 R2 Reporting Services-Berichts
    Demo: Hinzufügen von Interaktivität zu einem SQL Server 2008 R2 Reporting Services-Berichts
    Präsentation: Erweitern von SQL Server 2008 R2 Reporting Services-Berichten mit benutzerdefinierten Logik
    Zeiger auf das Lab: Erstellen Sie Ihre ersten relationalen Bericht mit SQL Server 2008 R2 Reporting Services

    SQLInsights finden Sie auf der Seite MSDN Training und Zertifizierung Ressourcen unter der folgenden URL:

    http://go.Microsoft.com/?linkid=9761002

    Sehen Sie sich die Videos an und überprüfen Sie die praktischen Übungseinheiten. Wenn Sie die Demos oder Hands-on Labs auf Ihrem eigenen Computer ausführen möchten, laden Sie diese hier herunter und installieren Sie des offline Training Kit. Alle SQLInsights Inhalte finden Sie im Getting Started > BI Entwickler -Seite.

    Ein weiterer Kurs aus der SQLInsights Serie befasst sich mit der Veröffentlichung und den Zugriff auf SQL Server 2008 R2 Reporting Services-Berichte. Wir hoffen SQLInsights wird Ihnen bei der Entwicklung Ihrer ersten Microsoft BI-Lösung helfen. Nochmals vielen Dank für Ihr Interesse an SQL Server 2008 R2!

  • Jetzt SQL Server 2008 R2 Integrationsservices lernen

    Für Entwickler, veröffentlichten wir die nächste Version in der Sql Server 2008 r2 Business Intelligence Trainingskurse ("SQLInsights") auf MSDN. Ich hoffe, Ihr voller Terminkalender erlaubt es Ihnen, die Erstellung eines ETL-Prozess (Extract, Transform, Load) mit SQL Server Integration Services (SSIS) zu erlernen, auch wenn es ein wenig Zeit erfordert.
    Entwickler verwenden SSIS-Pakete, um Datenmodelle zu beladen, die für ein schnelles und leistungsstarke Berichtswesen und Analytische Applikationen optimiert sind.

    Hier ist ein Überblick über den neuen Kurs:

    3. Einführung in SQL Server 2008 R2 Integrationsservices
    Präsentation: Einführung ETL-Verarbeitung mit SQL Server 2008 R2 Integrationsservices (SSIS)
    Präsentation: Implementieren von Ablaufsteuerung mit einem SQL Server 2008 R2 Integrationsservices-Paket
    Demo: Implementieren von Ablaufsteuerung mit einem SQL Server 2008 R2 Integrationsservices-Paket
    Präsentation: Implementieren von Datenflusstasks mit einem SQL Server 2008 R2 Integrationsservices-Paket
    Präsentation: Laden von Fakten- und Dimensionstabellen mit einem SQL Server 2008 R2 Integrationsservices-Paket
    Demo: Implementieren von Datenfluss Tasks mit einem SQLServer 2008 R2 Integrationsservices-Paket 
    URL auf das Lab: Erstellen Sie Ihren ersten Extrakt-Transform-Load-Prozess mit SQLServer 2008 R2 Integrationsservices
    SQLInsights finden Sie auf der Seite MSDN Training und Zertifizierung Ressourcen unter der folgenden URL:

    http://go.Microsoft.com/?linkid=9761002

    Schauen Sie die Videos an und überprüfen Sie die praktischen Übungen.
    Wenn Sie die Demos oder Hands-on Labs auf Ihrem eigenen Computer ausführen möchten, laden Sie die Dateien herunter und installieren Sie den
    offline Training Kit.

    Sie finden Sie alle SQLInsights Inhalte auf der Getting Started > BI Entwickler -Seite.
    In dem nächsten SQLInsights Kurs befassen wir uns mit einer Einführung in SQL Server 2008 R2 Reporting Services.
    Wir hoffen SQLInsights wird Ihnen helfen mit der Entwicklung Ihrer ersten Microsoft BI-Lösung erfolgreich zu sein.
    Nochmals vielen Dank für Ihr Interesse an SQL Server 2008 R2!

  • SQLBits die Top Veranstaltung in Bighton, UK am 7. April

    Ich möchte auf eine Top Veranstaltung in Europa aufmerksam machen, die SQLBits in Brighton am 7. April 2011.

    Auf der Veranstaltung spricht einer der Gründer Väter von Appel, Steve Wozniak. Steve ist heute Chef Entwickler von Fusion-IO, einer High-Performance Storage Technologie. Er wird über sehr alles verändernde Trends in der IT-Industrie sprechen.

    Auch die Gartner Group hat die SQL Server 2008 R2 Funktionalitäten bewertet und in die obere rechte Ecke des Magic Gartner Quadranten verlagert, wo alle Markteilnehmer gerne hin möchten.
    Auf der SQLBits wird man einen Einblick bekommen von führenden Experten aus aller Welt, welche Fähigkeiten der SQL Server aufweist und wie man optimaler Weise damit umgeht.
    Wenn Sie erfahren wollen wie der SQL Server in Hochverfügbarkeits- und Analytischen Umgebungen zu Einsatz kommt, ist die SQLBit sicher eine Reise wert.

    Gruß
    Ralph Kemperdick

  • Die Zukunft von Business Inetlligence - Eine Umfrage

    Hallo Zusammen, 

     

    Vielleicht möchte der ein oder Andere an der Umfrage auf LinkedIn “The Future of Business Intelligence” teilnehmen. Zurzeit geht der Trend aus Sicht vom BI Team in Richtung Embedded Analytics. das dies der Standard wird.

    Was glauben Sie? Stimmen Sie mit und lesen was einige sehr prominente Mitstreiter denken @ http://linkd.in/fQCXAX

    Die Umfrage läuft nur noch bis morgen!


    Gruß,

    Ralph Kemperdick

     

     

     

     

  • SQL Server von Linux Systemen zugreifen

    Bei den Connectivity Optionen von Linux zum SQL Server gibt es immer wieder Fragen wie es den genau funktioniert. Generell ist es jedoch meistens kein großes Problem, wenn man weiß welche Optionen es gibt.

    1.      Connectivity von Linux z.B. C++ Programmen auf den SQL Server erfolgt typischerweise über das ODBC Interface. Es gibt freie (Open Source Libraries) FreeTDS und kommerzielle Treiber z.B. von EasySoft und DataDirect.
    Eine gute Übersicht zu den verschieden Connectivity Optionen von einer Unix Plattform steht hier:
    http://www.sommarskog.se/mssqlperl/unix.html

    2.      Bei Standard JAVA Applikationen sollte der Zugriff kein Problem darstellen, wenn der JDBC Treiber sich austauschen lässt. Microsoft bietet einen JDBC Treiber für SQL Server zum freien Download hier an. Aktuell ist die Version 3.0 des JDBC Treibers, eine CTP des JDBC Treibers 4.0 wurde soeben freigegeben. Siehe http://blogs.msdn.com/b/jdbcteam/

    3.      Als einfache Applikation zur Datenpflege gibt es unterschiedliche Möglichkeiten von Microsoft. Die am häufigsten verwendete Option ist sicher MS-Access, das jetzt via SharePoint sehr leistungsfähige Web Applikationen erlaubt.
    Siehe
    http://office.microsoft.com/en-us/templates/CT010214400.aspx
    Einige Videos wie es genau handzuhaben ist findet man
    hier

    Diese Zusammenstellung soll eine erste Orientierung in den umfangreichen Connectivity Optionen des SQL Servers bieten.

    Die einzelnen Optionen sollte jedoch gegen die genauen Software Versionen im Einsatz geprüft werden.

    Gruß

    Ralph Kemperdick

  • Parallel Data Warehouse ein Überblick

    Da war ein Webcast geplant für die Vorstellung des SQL Server 2008 R2 Parallel Data Warhouse, der leider dem Schnee Chaos zum Opfer gefallen ist.

    Deshalb hier nun die Aufzeichnung des WebCasts und der Link auf die PowerPoint Präsentation.

    Frohe Weihnachten und einen guten Rutsch ins Neue Jahr wünscht Euch

    Ralph Kemperdick
    Senior Data Warehouse Spezialist
    Microsoft Duetschland GmbH

  • PowerPivot - ein Überblick in 11 Minuten

    PowerPivot, das neue kostenfreie Add-In für Excel 2010, gibt Endanwender erstmalig die Chance große Datenbestände effizient innerhalb von Excel zu analysieren. Dabei können diese Daten aus verschiedensten Datenquelle importiert, abgemischt und angereichert werden.
    Die Möglichkeit diese Analysen mittels Sharepoint Server anderen Kollegen direkt im Browser zur Verfügung zu stellen bietet dabei neue Möglichkeiten der Kolloboration und führt zu einer deutlichen höheren Produktivität aller Anwender.
    Auf vielfachen Wunsch hier ein kurzer Überblick (11min) zu den Grundfunktionalitäten von PowerPivot.

    Get Microsoft Silverlight


    Weitere Informationen:

    Blogs: