Nur kurz: Ich bin wieder da - als Cloud Solution Architect für Microsoft Azure. More to come...
Gruß,
Steffen
Liebe Freunde, liebe Blogleser, liebe Kunden und Partner, liebe noch-Kollegen
Nach 8 Jahren Microsoft und noch viel mehr Jahren SQL Server beginnt für mich am 10.12. eine neue Ära. Ich liebe SQL Server, ich habe immer gern für Euch die neuesten Informationen zusammen getragen, und ich mag nach wie vor Microsoft und die vielen coolen Technologien. Warum dann der Wechsel? Bei allem Guten hat mir eines häufig gefehlt: Berlin. Als ich daher ein Angebot bekommen habe, das mir mehr Berlin in einem coolen Umfeld bietet habe ich mich nach langer Überlegung entschlossen anzunehmen. Mehr dazu bald in meinem neuen privaten Blog unter http://steffenkrause.wordpress.com/
Der Datenbankwelt bleibe ich zu mindestens teilweise erhalten, aber dabei wird es nicht nur um SQL Server gehen. Wer mich wieder live sehen will wird Gelegenheit bekommen, ich plane, zu mindestens auf den Frankfurter Datenbanktagen und der PHP Konferenz zu sprechen, mehr wird sicherlich folgen
Ich danke Euch allen für die treue Leserschaft, die guten Kommentare und Fragen, die Zusammenarbeit, die vielen Anregungen und sogar Freundschaft in den vielen Jahren. Es war ne tolle Zeit! Später könnt Ihr mich unter http://steffenkrause.wordpress.com/ erreichen.
Gruß,Steffen
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
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:
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 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!
Hier ist der Download für PowerPivot für Excel
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
Migration
Dynamic Memory
Storage
CPU
Hochverfügbarkeit
Lizenzierung
VMWare (und andere)
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:
Der Download des Product Guide findet sich hier
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:
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;
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
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;
SELECT TOP (5) DOC_TBL.path_locator.ToString() Locator, DOC_TBL.name
FROM MeineFiletable AS DOC_TBL
INNER JOIN SEMANTICKEYPHRASETABLE
file_stream
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
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
SELECT mft.name, sst.score
FROM SEMANTICSIMILARITYTABLE
) 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
Name
Score
0,6667337
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;
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
@DocID,
@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
score
0,6196678
0,4326765
server
0,3456945
verschlüsselung
0,3421064
0,3254796
schlüssel
0,3249941
wird
0,2818047
datum
0,2744119
zertifikat
0,2636287
public
0,2460675
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
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
Gegenüber der ersten CTP von November 2010 gibt es eine Vielzahl von Neuerungen, hier die Details:
Relationale Datenbank
Data Quality Services
BI Development Studio
Integration Services
Analysis Services
Reporting Services
Master Data Services
Wie man sieht gibt es also viel zu testen!
Hier meine Denali-Ressourcen
Und schließlich die Downloads und anderen Informationen:
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.' );
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');
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];
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
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:
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
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:
Von hier aus kann man auch einfach den Dateisystem-Ordner öffnen:
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
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'
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')
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.
Wahrscheinlich hat es jeder schon gehört, aber dennoch:
Office 365 ist fertig und verfügbar. Es kann unter www.office365.com ab sofort bezogen werden. Testversionen (die nach 30 Tagen in Bezahlversionen umgewandelt werden können) sind auch verfügbar.
Auch für die Small Business Version kann übrigens Office Professional Plus dazu gebucht werden. Das kostet dann 12,75€/Monat zusätzlich zu den 5,25€/Monat des P1-Plans. Allerdings ist Office Professional Plus (anders als Office 365 selbst) nur als Jahresabonnement erhältlich, nicht auf Monatsbasis. Ab dem E3-Plan von Office 365 für mittelständische und große Unternehmen ist Office Professional Plus sowieso enthalten.
Für weitere Informationen empfehle ich meine Videoserie
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.
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:
Schon am geringeren Anteil an den Gesamtkosten der Abfrage sieht man den Effekt des Columnstore. Und auch in Zahlen drückt sich das aus:
Artikelbewegung-Tabelle. Scananzahl 8, logische Lesevorgänge 4520
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:
Columnstore Indizes werden in der kommenden SQL Server “Denali” CTP enthalten sein. Anmeldungen dafür unter http://www.sqlserverlaunch.com
Cloud 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:
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:
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)“.
Mit 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:
1d Virtualisierung und Verwaltung der Instanzen
Hier 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.
Darü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.
Zuerst 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.
Fü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.
Mit 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
Bei der TechEd Nordamerika gibt es einige wichtige Ankündigungen zu SQL Server. So wurde bekannt gegeben, dass die nächste öffentliche CTP-Version von SQL Server “Denali” im Sommer erscheinen wird. Damit man informiert wird kann man sich hier anmelden.
Gleichzeitig wurde die Schwerpunkte der Entwicklung von SQL Server Denali zusammengefasst:
Mission Critical Confidence (also in etwa: Zuverlässig für unternehmenskritische Anwendungen)
Unter diesem Titel werden die zahlreichen Neuerungen für unternehmenskritische Anwendungen zusammengefasst, wie:
Unter Breakthrough Insight werden umfassende Neuerungen im Business Intelligence Bereich zusammengefasst, wie:
Unter dem Titel Cloud on yor Terms wird das einheitliche Spektrum von SQL Server im Data Center über SQL Server Applicances und Private Cloud bis zu Public Cloud mit SQL Azure abgedeckt:
Die neue 5.0 Version der SQL Server Migration Assistants (SSMA) für Oracle, MySQL, Sybase und Access ist erschienen. Die wichtigsten Neuerungen sind:
Kostenloser Download:
Wer mehr über die Migration erfahren möchte: Im Rahmen meiner “SQL Server für Ein- und Umsteiger”-Reihe habe ich je einen Webcast zur Migration von Oracle und MySQL gemacht
Microsoft ist eine Firma mit vielen Möglichkeiten. Und nach über 6 Jahren als Technical Evangelist werde ich auch eine dieser Möglichkeiten ergreifen und ab dem 1.5. in den Datenbank-Bereich für Großkunden wechseln. Das gibt mir die Möglichkeit, mich nach Jahren der Breite (SharePoint, Cloud Services, HPC, BizTalk, SQL, BI, Internet Explorer,….) wieder fokussierter um ein Thema (große Datenbanken mit SQL Server, vor allem relational) zu kümmern und dabei auch deutlich intensiver als bisher einzelne Großkunden betreuen. Ich freue mich sehr auf diese neue Herausforderung. Wobei manche Dinge dann doch Konstanten bleiben. Mein erster Vortrag als Evangelist Ende 2004 war bei demselben Kunden, bei dem ich jetzt meinen ersten Termin habe
Für dieses Blog heißt das: Es wird in Zukunft primär ein SQL Server Blog sein. Doch da mit SQL Server “Denali“ eine sehr spannende neue Version ins Haus steht wird meine Post-Frequenz wohl eher höher werden als bisher. Ich freue mich schon auf Artikel und Videos zur neuen Hochverfügbarkeitslösung AlwaysOn, zu Columnstore Indizes, T-SQL Neuerungen wie Sequences und und und… Und auch SQL Azure wird weiterhin einen wesentlichen Platz einnehmen.
Nun wird es aber Zeit für einen
Rückblick
Ich war jetzt 6,5 Jahre Evangelist, und in dieser Zeit ist wirklich viel passiert. Hunderte von Events, Webcasts, Videos, Blogeinträgen, diverse Presseartikel, Early-Adopter-Projekte. Ich habe nur in 2 deutschen Bundesländern (Mecklenburg-Vorpommern und Thüringen) nicht gesprochen und war Sprecher in den Niederlanden, Belgien, Spanien, Frankreich (OK, geschummelt, das war vor deutschem Publikum), Österreich, der Schweiz, den USA und sogar in Malaysia. Zu Beginn waren Blogs der große Hype, jetzt gibt es Twitter , LinkedIn , Youtube , TechNet Edge , Channel 9 , Quora und Facebook (nein, kein Link, Facebook ist privat). Und doch finde ich die persönliche Kommunikation immer noch sehr wichtig, und die fand auf den Veranstaltungen und bei Community-Treffen (wie die der SQLPASS und der SharePoint Community ) statt.
Einige dieser Ereignisse sind mir besonders in Erinnerung geblieben. So war der SQL Server 2005 Launch (+VS 2005, BizTalk 2006) in Karlsruhe im Februar 2006 nicht nur mein erstes richtig großes Event, sondern auch die Geburtsstunde einiger Sessions, die ich in aktualisierter Form immer noch halte: BI Plattform (die Data Mining Demo) und SQL Hochverfügbarkeit (mit dem Programm, das das automatische Umschalten zeigt).
Der nächste Launch war dann auch das größte Event, auf dem ich je gesprochen habe, und zugleich das einzige Mal, dass ich vor mehr als 3000 Menschen in einem Saal SQL Server präsentiert habe: Frankfurt Messe (Windows Server 2008, SQL Server 2008, Visual Studio 2008). Und dass mein neuer Chef mir hier das Mikrofon hält ist eine schöne Erinnerung ,-)
Auch ein internes Ereignis ist mir sehr in Erinnerung geblieben: Das Company Meeting im „Starlight Express“ in Bochum, wo ich fast allen deutschen Microsoft Kollegen SQL Server Integration Services vorgestellt habe.
Und schließlich, meine weiteste Dienstreise: TechEd SouthEast Asia in Kuala Lumpur, Malaysia.
Doch auch viele kleinere Kundentermine sind mir sehr in Erinnerung geblieben, wie eine der ersten HPC Einführungen Deutschlands bei der hhpberlin oder Integration Services mit riesigen Datenmengen bei der Börse Stuttgart .
Die Zukunft meines Jobs wird sich eher um solche Termine drehen, und leider werde ich über die meisten davon nichts schreiben dürfen (außer der Kunde macht eine Case Study). Aber ich werde weiter interessante Erkenntnisse (ohne Nennung des Kunden) hier schreiben und auch insbesondere der SQLPASS treu bleiben.
Schließlich haben die vergangenen Jahre auch privat viele Veränderungen gebracht, wobei mein Beruf mir die Stabilität gegeben hat. Von Besinnung auf mich (erst Fitnessclub, jetzt dazu auch Yoga und Meditation) über zwei Umzüge (ins Reihenhaus und dann zur Dachterrasse) bis zum neuen Leben als alleinerziehender Vater. Daher hier mein Dank an die Menschen, die mein Leben bereichert haben und bereichern und mich unterstützt haben und unterstützen, besonders: mein bester Freund, meine Partnerin, meine Kinder, meine Exfrau, meine Eltern und viele mehr.
Nachtrag: Ich habe hier nur die privaten Unterstützer aufgeführt. Beruflich gab es so viele wunderbare Kollegen, Partner und Kunden dass es zu viel wäre es aufzuführen, daher hier nur: Danke an meinen Manager und meine Teamkollegen sowie an die gesamte DPE.
Und: Wer jetzt denkt "Da ist doch dann ein Job frei" - der hat Recht. Die erste Stellenausschreibung ist raus: Technology Evangelist (m/w) (Cloud Infrastructure)
So, und jetzt noch Ostern genießen (heute: Kletterwald mit den Kindern), dann TechDays Belgien und Niederlande und dann Schnellstart in der neuen Rolle.
Als Vorbereitung für meine Sessions bei der CeBit, beim TechSummit Cloud und bei den TechDays NL habe ich eine Reihe von Videos zu Office 365 aufgezeichnet und diese auf TechNet Edge veröffentlicht. Ziel dieser Reihe ist es, den Administratoren eine Überblick über die ersten Administrationsaufgaben zu geben und eine Schritt-für-Schritt Anleitung für das vielleicht komplexeste Administratiosnthema zu geben: die (optionale) Identity Federation mit einem lokalen Active Directory.
Als Ergänzung zu dieser Videoserie empfehle ich einige Vorträge, die bereits zum Download verfügbar sind
Doch hier nun meine Videos:
Dieses Video beinhaltet ein typisches Zusammenarbeitsszenario. Ich habe es für den Business-Überblick bei der CeBit erstellt um einige Office 365 Funktionen aus Endbenutzersicht zu zeigen.
TechNet Edge Videodownload | Youtube
In diesem Video zeige ich die Basiseinrichtung eines Clientrechners für Office 365. Dieser Rechner braucht kein Domänenmitglied zu sein, und es sind für dieses Szenario keinerlei lokale Server erforderlich
Die meisten Kunden wollen als Email-Adresse und Login für Office 365 nicht die mitgelieferte meinedomain.onmicrosoft.com-Adresse verwenden sondern eine eigene Domäne wie meinefirma.de oder intranet.meinefirma.de. In diesem Video zeige ich, wie man das einrichtet
Wer seine lokalen Active Directory Benutzer auch in Office 365 nutzen will hat 2 Optionen: Entweder nur Verzeichnissynchronisation (das Login erfolgt dann weiterhin mit der Microsoft Online ID) oder Active Directory Federation (das Login erfolgt dann mit dem Active Directory Account, wobei die Online-Dienste nie das Kennwort des Benutzers erfahren). Die Einrichtung von beidem zeige ich in diesem Video
Damit sich die Benutzer auch von außerhalb des eigenen Firmennetzes per ADFS anmelden können (und zumindestens in der Beta für Outlook: Damit sie sich überhaupt anmelden können) benötigt man einen aus dem Internet zugreifbaren ADFS Proxy. Und für diesen wiederum benötigt man ein gültiges SSL-Zertifikat. Wie man beides einrichtet zeige ich in diesem Video
Zum Abschluss und als Beweis, dass die Identity Federation funktioniert zeige ich noch die Einrichtung eines Clientrechners, der ein AD-Domänenmitglied ist und wo sich der Benutzer über die Federation bei den Online Services anmeldet
Bei allem ist noch zu bemerken, dass sich Details der Oberfläche und des Verhaltens im Verlauf der Office 365 Beta noch ändern können
Viel Spaß mit Office 365 wünscht Steffen
Weltweit bekannte Technologie-Experten wie Juval Lowy, John Papa oder Kimberly L. Tripp – und ich - geben anlässlich der DevConnections, die Teil einer internationalen Veranstaltungsreihe ist, am 9. und 10. Juni 2011 in Karlsruhe ihr Wissen rund um die Technologieplattform von Microsoft weiter. Unter dem Motto "The Conversation Begins Here“ können Teilnehmern der Fachkonferenz zukünftige Technologien kennenlernen, detailliert in aktuelle Technologien einsteigen sowie Probleme und Fragen diskutieren.
Die Agenda der DevConnections setzt sich aus acht verschiedenen thematischen Tracks für Entwickler und IT Professionals zusammen. Mit dabei in Karlsruhe sind Themenblöcke zu ASP.NET, Exchange, SharePoint Administration, SharePoint Development, Silverlight, SQL Server, Visual Studio und Windows. Neben den technischen Vorträgen dürfen sich die Teilnehmer auch über drei Keynotes von Dave Mendlen (Senior Director Developer Platform and Tools), Steve Fox (Director Developer and Platform Evangelism for SharePoint) und Scott Guthrie (Corporate Vice President .NET Developer Platform) freuen.
Zusätzlich findet im Vorfeld der Konferenz am 8. Juni ein separater Tag mit acht verschiedenen Ganztages-Workshops zu den einzelnen Themenbereichen statt.
Die Teilnahmegebühr für die zweitägige Konferenz liegt bei 1.199 Euro zzgl. MwSt. Wer sich bis zum 13. Mai 2011 anmeldet, kann immerhin noch gute 200 Euro mit dem Early Bird-Tarif sparen.
Die Teilnahme am Workshop-Tag kostet 499 Euro zzgl. MwSt. Auch hier besteht die Möglichkeit, bei einer Anmeldung bis zum 13. Mai mit dem Early Bird-Tarif 150 Euro zu sparen.
Ich werde 2 Sessions halten: Office 365 Überblick und Datenbank benutzen ohne Datenbank installieren: SQL Azure (incl. Sync Services und SQL Azure Reporting)
Weitere Informationen unter: http://www.devconnections.com/germany/
Gruß Steffen
Die CeBIT ist im Anmarsch, und somit auch meine Vorträge. Da dieses Mal der Schwerpunkt des Microsoft-Messeauftritts das Thema Thema Cloud Computing ist halte ich auch vor allem Cloud-Vorträge.
Auf der Microsoft-Bühne genannten großen Bühne gibt es täglich drei Mal täglich je 20 Minuten lang Office 365 im Überblick. Hier geht es vor allem um die Frage: Wie kann die Produktivität der Mitarbeiter durch die in Office 365 enthaltenen Serverprodukte (Exchange, SharePoint, Lync) erhöht werden ohne dass die IT-Abteilungen selbst diese Server installieren und betreuen muss? Die Demo aus diesem Vortrag habe ich schon mal hier veröffentlicht.
Der Vortrag ist Di-Fr jeweils 10:00, 14:00 und 17:40, Samstag 13:20. Ich übernehme: Di 10:00, Mi 10:00, Do 14:00, Fr 10:00 und 17:40 und Sa 13:20, den Rest macht der Produktmanager Office 365 Florian Müller
Im TechNet/MSDN Vortragsraum gebe ich einen deutlich technischeren Überblick zu Office 365, der sich an Administratoren richtet, und zwar Di 14.30, Mi 15:00, Do 14:30, Fr 11:00 und Sa 10:30. Daneben hält Daniel Melanchthon auch einen Vortrag zu Office 365 Administration und Sicherheit
Außerdem spreche ich im TechNet/MSDN Vortragsraum unter dem Titel “Datenbank nutzen ohne Datenbank zu installieren?” über das Thema SQL Azure, inklusive SQL Azure Reporting und SQL Azure Sync Services. Die Vorträge (je 30 Minuten) sind Di 13:30, Mi 14:00, Do 9:30, Fr 14:00 und Sa 15:30
Das gesamte Microsoft Vortragsprogramm ist hier. Und wer mit mir einfach mal so reden will, auch über andere Themen, der ist gern nach meinen Vorträgen willkommen.
Am Vorabend der CeBIT findet mein traditioneller Besuch bei der PASS Regionalgruppe Hannover/Göttingen statt. Dort ist mein Thema SQL Server “Denali” und die Neuerungen in der öffentlichen CTP. Allerdings werde ich es wegen der Proben auf der CeBIT nicht pünktlich zu 18:30 Uhr schaffen.
Schließlich findet man mich beim Community-Treffen am Freitag Abend und am Samstag, dann mit einem längeren Vortrag zu Office 365
Viel Spaß auf der CeBIT wünscht
Mit den SQL Azure Reporting Services ist zum ersten Mal eine der Business Intelligence Komponenten von SQL Server als Cloud-Dienst verfügbar. Die Einladungen für die ersten interessierten Kunden sind raus, weitere Einladungen folgen in einigen Wochen. Jeder der möchte und ein WIndows oder SQL Azure Abo hat kann sich über den Reporting-Link im Azure Developer Portal anmelden.
SQL Azure Reporting basiert auf der gleichen Berichts-Engine wie SQL Server Reporting Services und ermöglicht dadurch, vorhandene Berichte sehr einfach in die Cloud-basierte Berichtsplattform zu übernehmen und mit den bekannten Werkzeugen wie BI Development Studio neue Berichte zu entwickeln.
Die erste Version von SQL Azure Reporting ist vor allem für die Erstellung von Berichten gedacht, die auf SQL Azure als Datenquelle beruhen. Andere Datenquellen werden anfänglich nicht unterstützt. Allerdings werden die Azure Cloud-Services deutlich häufiger aktualisiert und um neue Features ergänzt als das bei einem Produkt wie SQL Server möglich ist. Derzeit werden ca. alle 4-5 Monate neue Funktionalitäten zu Windows Azure, SQL Azure und verbundenen Technologien hinzugefügt, und es ist damit zu rechnen, dass das auch in Zukunft mit SQL Azure Reporting der Fall sein wird.
SQL Azure Reporting unterstütz den vollen Satz von Visualisierungen, die auch in SQL Server 2008 R2 unterstützt werden, darunter Landkarten, Tablix und die verschiedenen Arten von Charts und Sparklines. Ebenso werden die verschiedenen Export-Formate für Berichte unterstützt. SQL Azure Reporting Berichte können also per Klick oder programmatisch nach Word, Excel, PDF oder in andere Formate exportiert werden. Ebenso entspricht die Darstellung des Berichts im Webbrowser genau dem, was die Benutzer von SQL Server Reporting Services gewohnt sind:
Auch für Entwickler bleibt vieles genauso, wie sie es gewohnt sind. Die Entwicklungsumgebung ist wie gehabt BI Development Studio, die Designer sind dieselben, die Sie bereits kennen. Berichte aus SQL Azure Reporting können wie gewohnt im Report Viewer Control, das für Windows- und für Web-Programmierung verfügbar ist, in eigenen Programmen dargestellt werden. Und auch das SOAP Web Services API ist das gleiche mit dem Entwickler heute schon arbeiten.
Die Verwaltung von SQL Azure Reporting erfolgt über das neue Azure Developer Portal (https://windows.azure.com/), einen klassischen Report Manager gibt es ebenso wie eine SharePoint-Integration nicht. Dadurch ist die komplette Verwaltung einer Anwendung, bestehend aus einer Windows Azure Webanwendung, einer SQL Azure Datenbank und darauf beruhenden SQL Azure Reporting Berichten aus einer einheitlichen Oberfläche möglich. In der aktuellen CTP gibt es im Portal aber nur die absolutne Basisfunktionen:
Mehr Details zu SQL Azure Reporting gibt es in meinem Artikel in der Database Pro, die Anfang März erscheint. Wer bis dahin schon mal SQL Azure und Windows Azure testen möchte kann das 3 Wochen kostenlos (und ohne Angabe einer Kreditkarte) hier tun. Und wer ein MSDN Abo hat bei dem ist Windows Azure eh enthalten, er muss es nur freischalten
Microsoft Platform Ready ist die neue Plattform für Softwarehersteller weltweit, auf der zu aktuellen Microsoft-Technologien, Ressourcen, Veranstaltungen, Kompatibilitätstests, Vertriebs- und Marketingunterstützung zusammengefasst werden.
In Deutschland bieten wir Ihnen im Frühjahr 2011 im Rahmen von MPR vier neue Veranstaltungen zu den Themen SQL Server 2008 R2 und SharePoint 2010 an. Und damit Sie auch die Informationen erhalten, die Sie in Ihrer Rolle in Ihrem Unternehmen benötigen, haben wir die Veranstaltungen aufgeteilt in Briefings für Geschäftsführer und IT-Leiter sowie in Camps für technische Leiter sowie Entwickler.
Für weitere Informationen, Agenda und zur Anmeldung folgen Sie den einzelnen Links:
o Briefing für SharePoint 2010 am 07.02.2011 in Unterschleißheim
o Briefing für SQL Server 2008 R2 am 09.02.2011 in Köln
o Camp für SharePoint 2010 am 08.03.2011 in Köln
o Camp für SQL Server 2008 R2 am 14.03.2011 in Unterschleißheim
Es gibt jetzt ein MSDN Forum für SQL Azure:
· http://social.technet.microsoft.com/Forums/de-de/sqlazurede/threads
Nachdem sie eine Weile verschwunden war ist meine SQL Server Grundlagen für Administratoren-Webcastserie nun wieder verfügbar. Hier die Links:
TechNet Webcastreihe: SQL Server Grundlagen (Teil 1) Installation, Konfiguration, Planung (Level 200)
TechNet Webcastreihe: SQL Server Grundlagen (Teil 2) Administrationswerkzeuge (Level 200)
TechNet Webcastreihe: SQL Server Grundlagen (Teil 3) Backup und Restore (Level 200)
TechNet Webcastreihe: SQL Server Grundlagen (Teil 4) Wartungsaufgaben (Level 200)
TechNet Webcastreihe: SQL Server Grundlagen (Teil 5) Hochverfügbarkeit (Level 200)
TechNet Webcastreihe: SQL Server Grundlagen (Teil 6) Anwendungen: SharePoint und andere (Level 200)
Die Links zu den Entwickler- und SQL Express-Themen sind hier (jetzt auch inklusive der zwei: Reporting Services Teile)
Gruß
Vorige Woche wurde auf der PASS Konferenz und der TechEd Europe die Verfügbarkeit der ersten Community Technical Preview (CTP1) der nächsten Version von SQL Server mit dem Codenamen “Denali” bekannt gegeben.
Da stellt sich natürlich die Frage: Was ist neu? Bevor ich aber auf die Neuerungen in der CTP1 eingehe ein paar Worte zum SQL Server Entwicklungszyklus: Seit SQL Server 2008 ist die SQL Server Entwicklung in viele einzelne Zweige (Branches) aufgeteilt, in denen jeweils die einzelnen Neuerungen relativ unabhängig voneinander entwickelt werden. Das hat den Vorteil, dass die jeweiligen Entwicklungsteams eigenständig arbeiten können, bis ihr Code (das “Improvement”) stabil und funktional ist. Erst dann, wenn das jeweilige Feature nahezu fertig ist wird es in den “Main Branch” eingecheckt, aus dem auch die CTP-Versionen stammen.
Für die CTP1 hat dieses Entwicklungsverfahren nun zwei Folgen: 1. Vieles was neu sein wird ist in der CTP1 noch nicht enthalten. So gibt es noch keine Neuerungen in Analysis Services oder Reporting Services, denn diese beiden Teams hatten ja viele Neuerungen im erst im Mai erschienenen SQL Server 2008 R2. 2. Das, was drin ist gilt als stabil und kann auf Herz und Nieren geprüft werden. Daher ist dieser Artikel auch in “In CTP1 enthalten” und “Nicht in CTP1 enthalten” aufgeteilt
In CTP1 enthalten
Hochverfügbarkeit: Eine der Wichtigsten Neuerungen in Denali wird die neue Hochverfügbarkeitslösung “AlwaysOn” sein. Bisher gab es verschiedene Hochverfügbarkeitslösungen in SQL Server: Cluster (ausschließlich mit Shared Storage), Database Mirroring und Log Shipping als die Wichtigsten. Mit AlwaysOn in Denali werden diese Lösungen nun sowohl vereinigt als auch erweitert:
Die Basis von Denali AlwaysOn ist die Hochverfügbarkeitsgruppe (Availability Group). In einer Availability Group werden eine oder mehrere SQL Server Datenbanken hochverfügbar gemacht (ein gemeinsames Failover mehrerer Datenbanken ist also ohne Probleme möglich). Das ist sowohl mit Shared Storage (also wie ein bisheriger Cluster) als auch mit Non Shared Storage (wie bei Database Mirroring) möglich, und bei Non Shared Storage asynchron oder synchron (CTP1 nur asynchron). Bei Non Shared Storage hat man also mehrere Kopien (Replicas – Repliken) der Datenbank (in CTP1 ist nur eine Replica möglich). Diese Repliken können im Gegensatz zu Database Mirroring auf Wunsch lesbar gemacht und so zum Beispiel für Reporting verwendet werden. Als Basis für die Availability Groups werden die Windows Clusterdienste verwendet, alle Maschinen befinden sich im selben Windows-Cluster. Auch dafür ist aber keine Shared Storage erforderlich, und die einzelnen Clusterknoten können sich in verschiedenen IP-Subnetzen (und sogar auf verschiedenen Kontinenten) befinden. In Summe ermöglicht AlwaysOn sehr flexible Hochverfügbarkeitslösungen je nach Verfügbarkeitszielen des Kunden
Mit “Contained Databases” wird das Verschieben von Datenbanken mitsamt der abhängigen Objekte deutlich vereinfacht. Das ist sowohl für Hochverfügbarkeit als auch für Entwicklung/Test/Produktions-Zyklen sehr vorteilhaft. In einer Contained Database sind neben der eigentlichen Datenbank auch Benutzer enthalten (die keine Logins in master benötigen) oder auch temporäre Objekte, die direkt in der Contained Database gespeichert werden.
Auch in Transact SQL gibt es einige Neuerungen. So bieten Sequences die Möglichkeit, Zahlenfolgen (z.B. für einen Primärschlüssel) außerhalb einer Tabelle transaktional konsistent zu erzeugen.
Mit der OFFSET Klausel kann man bestimmte Bereiche eines Ergebnisses abfragen, zum Beispiel um die Ergebnisse einer Abfrage seitenweise darzustellen. So holt diese Anweisung Zeilen 11-20 aus einer Tabelle:
SELECT DepartmentID, Name, GroupNameFROM HumanResources.Department ORDER BY DepartmentID OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
Die Volltextsuche unterstützt jetzt Dateieigenschaften (z.B. Titel und Autor von Office-Dokumenten) und ermöglicht eine detaillierte Angabe innerhalb der Near-Klausel (also: alle Dokumente, wo “SQL” und “Denali” innerhalb von 3 Wörtern vorkommen)
Die geografischen Datentypen unterstützen jetzt die ganze Erde (bisher musste ein Objekt immer innerhalb einer Halbkugel sein) sowie Kreisausschnitte.
Die SQL Server Integration Services haben die größte Überarbeitung seit SQL Server 2005 erfahren.
So gibt es jetzt Projekte, die zusammengehörige Pakete zusammenfassen und eine gemeinsame Konfiguration ermöglichen. Diese Projekte können auch gemeinsam auf dem Zielsystem installiert werden. Wichtigstes Deployment-Ziel ist dabei der neue Integration Services Dienst, der eine zentrale Verwaltung und Ausführung von Integration Services Projekten und Paketen direkt auf dem Server ermöglicht.
Die Object Impact and Data Lineage Analysis sowie der zugehörige Dependency Designer ermöglichen eine Nachverfolgung der Folgen von Änderungen an Datenquellen und Paketen (wie der Änderung eines Spaltennamens)
Der Package Designer hat viele Änderungen erfahren, wie ein neuer Connection Designer, die Möglichkeit der Bearbeitung bei getrenntem Input, einen besseren Mapper, der auch bei großen Spaltenzahlen übersichtlich ist, und eine Undo-Funktion.
Darüber hinaus gibt es zahlreiche Performanceverbesserungen, vor allem bei Merge und Merge join Transformationen
Was kommt nach CTP1?
Relationale Engine
Neben der Ergänzung der fehlenden Komponenten von AlwaysOn ist vor allem der Column Store Index (Codename “Apollo”) zu nennen. Damit kann man spaltenbasierte hochkomprimierte Indizes erstellen, die besonders bei Aggregationen in Data Warehouse Abfragen enorme Performanceverbesserungen ermöglichen. Die spaltenbasierte Engine, die hier verwendet wird ist schon aus PowerPivot für ihre Geschwindigkeit bekannt.
Bei den Tools wird es viele Neuerungen geben. So wird als Basis Visual Studio 2010 verwendet und die Tools werden (unter dem Codenamen “Juneau”) viele Funktionen sowohl für die relationale als auch für die BI-Entwicklung hinzugewinnen.
Mit Filetables wird es möglich sein, auf in Filestream gespeicherte Tabellen auch über ganz normale Fileshares und mit Programmen zuzugreifen, die nichts von SQL Server wissen.
Unter dem Namen “BI Semantic Model” wird eine deutlich erweiterte Vertipaq- Engine (bisher in PowerPivot) auch in Analysis Services Einzug halten. Dies ermöglicht neben der extrem hohen Performance der VertiPaq Engine auch die deutlich einfachere Erstellung von nicht allzu komplexen Analysis Services Projekten. Mehr zur Positionierung findet sich hier: http://bit.ly/9xZhEr
Die Wichtigste Neuerung ist hier das Projekt Crescent, eine webbasierte Anwendung zur einfachen Erstellung und Benutzung von visuell sehr ansprechenden Berichten:
Schließlich wird es mit den Data Quality Services eine neue Komponente zur Prüfung und Verbesserung der Datenqualität geben, die sich sowohl in Integration Services als auch eigenständig verwenden lässt.
Am 02. Dezember, 15:30-16:30 werde ich in einem Webcast einen Überblick über “Denali” CTP1 geben. Die Anmeldung wird demnächst hier möglich sein
Der Download der CTP1 findet sich hier, die Dokumentation hier