Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung): SQL Reihe auf MSDN-Solve https://www.microsoft.com/germany/msdn/solve/knowhow/

Ähnliche Präsentationen


Präsentation zum Thema: "Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung): SQL Reihe auf MSDN-Solve https://www.microsoft.com/germany/msdn/solve/knowhow/"—  Präsentation transkript:

1 Ruprecht Dröge BeConstructed GmbH

2 Firma (Schulung, Beratung, Softwareentwicklung): http://www.beconstructed.de SQL Reihe auf MSDN-Solve https://www.microsoft.com/germany/msdn/solve/knowhow/ sql/default.mspx BLOG: http://blogs.sqlserverfaq.de Camp auf Mallorca über Katmai und BI 2008: http://www.insider-camp.de

3

4 Deklaration und Inititialisierung Inkrement / Dekrement Zeilen-Konstruktor Tabellen Parameter Grouping Sets Neue Datentypen Merge Backup Compression Lock Escalation

5 Immer weitreichendere Kompatibilität mit ANSI z.B. das Semikolon am Anweisungsende in immer mehr Befehlen verpflichtend Sollte man sich schon mal angewöhnen ; Angleichung an andere Programmiersprachen im Microsoft Umfeld Try Catch etc. Initialisierung und Deklaration

6 Neue Möglichkeit z.B. in gespeicherten Prozeduren und Batches eine Variable in einem Statement sowohl zu deklarieren als auch zu initialisieren. DECLARE @Version nvarchar = 'SQL Server 2008; SELECT Version=@Version

7 Die Möglichkeit Variablen in einer vereinfachten Syntax zu inkrementieren und zu dekrementieren declare @int2 int=1; set @int2+=7; Select Out=@int2; set @int2-=5; Select Out=@int2;

8 Das Einfügen mehrerer Zeilen in einem Statement INSERT INTO tblLaender (id,land) Values (1,'Frankreich'), (2,'Deutschland'), (3,'Großbritanien'), (4,'Italien') ;

9 Neue Möglichkeiten der Programmierung CREATE TYPE Angestellte AS TABLE ( Vorname nvarchar(50) NOT NULL, Nachname nvarchar(50) NOT NULL, Gehalt money NULL ); CREATE PROCEDURE ZeigeAngestellte @Ang Angestellte READONLY AS SELECT * FROM @Ang; Ist ein "gewöhnlicher" benutzerdefinierter Typ SELECT * FROM Sys.types; Oder im SQL Server Management Studio

10 Neue Syntax ANSI Kompatibel SELECT Planet, Kontinent, Land, AnzahlStaedte=Count(*) FROM Staedte GROUP BY GROUPING SETS (Planet, Kontinent, Land)

11 Bisher: (small)Datetime, Datum UND Uhrzeit Nun: DATE Nur Datum von 1.1.0001 bis 31.12.9999 TIME(n) Nur Zeit, optional mit Genauigkeit bis 100 ns (n=1-7) DateTime2(n) Kombination Großer Datumsbereich, optional mit Genauigkeit bis 100 ns, aber keine Zeitzonen DateTimeOffset(n) UTC Zeit mit Zeitzonen, optional mit Genauigkeit bis 100 ns

12 HierarchyID Abbildung hierarchischer Strukturen z.B. in Firmen CREATE TABLE MPressOrg (ID int identity primary key,HiD HierarchyID,Lastname nvarchar(80)); GO INSERT INTO MPressOrg VALUES ('/','Braun-Weisholler'),('/1/','Löffelmann'),('/2/','Weiherer'),('/1/1/','Raatz'),('/1/2/','Dröge'),('/2/1/','Holert');.NET Datentyp Muss nicht fortlaufend nummeriert sein Auch '/1/1.5/' möglich Viele Methoden

13 GetAncestor(i) (Vorfahr), Also Einträge der übergeordnete Ebene, i=Anzahl der Ebenen GetDescendant(p1,p2) (Nachkomme) untergeordnete Ebene (bei p1=null, p2=null), oder Abhängig von p1,p2 GetLevel Ebene des aktuellen Wertes GetRoot Wurzel IsDescendant Ist untergeordnete Ebene Parse Einlesen von String-Werten Read Nur zu internen Zwecken bei der Umwandlung varbinary / hierarchyid Reparent Neuzuweisung der übergeordneten Ebene ToString Write Nur zu internen Zwecken

14 DECLARE @SubjectEmployee hierarchyid, @OldParent hierarchyid, @NewParent hierarchyid SELECT @SubjectEmployee = OrgNode FROM HumanResources.EmployeeDemo WHERE LoginID = 'adventure-works\gail0' ; -- Node /1/1/2/ SELECT @OldParent = OrgNode FROM HumanResources.EmployeeDemo WHERE LoginID = 'adventure-works\roberto0' ; -- Node /1/1/ SELECT @NewParent = OrgNode FROM HumanResources.EmployeeDemo WHERE LoginID = 'adventure-works\wanida0' ; -- Node /2/3/ UPDATE HumanResources.EmployeeDemo SET OrgNode = @SubjectEmployee.Reparent(@OldParent, @NewParent) WHERE OrgNode = @SubjectEmployee ;

15 Geo-Datentypen CREATE TABLE SpatialTable ( id int IDENTITY (1,1), GeomCol1 geometry, GeomCol2 AS GeomCol1.STAsText() ); GO INSERT INTO SpatialTable (GeomCol1) VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0)); Ebenfalls.NET Implementierung

16 Im System, das im englischen als "Flat- earth" oder "planar" System bekannt ist, werden Distanzen und Bereiche mit der gleichen Einheit wie Koordinaten beschrieben. Wenn man der geometry Datentyp benutzt, ist die Distanz zwischen (2,2) und (5,6) 5 Einheiten groß, unabhängig davon, welche Einheit man benutzt. Im "ellipsoidal" oder "round-earth" System werden Koordinaten in Längen- und Breitengraden (latitude und longitude) angegeben. Dabei werden Längen und Bereiche normalerweise in Metern bzw. Quadratmetern angegeben. Die Maßeinheit hängt dann ab von dem "spatial reference identifier" (SRID) der geography Instanz. Üblicherweise wird der Meter als Maßeinheit benutzt.

17 ANSI Standard SQL 2006 "UPSERT" Also Insert oder Update (oder Delete) in einem Statement MERGE dbo.Personen USING PersonenImport ON Personen.ID=PersonenImport.ID WHEN MATCHED THEN UPDATE SET Personen.Nachname=PersonenImport.Nachname, Vorname=PersonenImport.Vorname WHEN NOT MATCHED THEN INSERT VALUES (Nachname, Vorname) OUTPUT $Action, inserted.Nachname, inserted.Vorname ; Vorteil gegenüber von einzelnen Insert- oder Update-Statements Ziel und Quelltabelle werden nur einmal gelesen Daher bessere Performance

18 MERGE Dann Tabellen-Name USING Refrenztabelle oder SELECT-Statement ON Verknüpfung der beiden Informationen Wie bei JOIN Ausdrücken WHEN MATCHED THEN Auszuführende Befehle, wenn die in der ON- Klausel angegebenen Werte übereinstimmen WHEN NOT MATCHED THEN Auszuführende Befehle, wenn die in der ON- Klausel angegebenen Werte nicht übereinstimmen

19 WHEN SOURCE NOT MATCH Auszuführende Befehle, wenn die Werte, die in der ON-Klausel angegeben werden, im USING nicht vorkommen Mehrere MATCHED Anweisungen WHEN MATCHED AND Lager.Anzahl-Verkauf.Anzahl<=0 THEN DELETE WHEN MATCHED THEN UPDATE SET Lager.Anzahl=Lager.Anzahl-Verkauf.Anzahl

20 Sehr einfache aber wirkungsvolle Erweiterung BACKUP DATABASE Test TO DISK=C:\Test\Testfull.bak WITH COMPRESSION

21 droege@beconstructed.deblogs.sqlserverfaq.dedroege@beconstructed.deblogs.sqlserverfaq.de

22 Wir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.


Herunterladen ppt "Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung): SQL Reihe auf MSDN-Solve https://www.microsoft.com/germany/msdn/solve/knowhow/"

Ähnliche Präsentationen


Google-Anzeigen