22
Neuerungen in T-SQL Ruprecht Dröge BeConstructed GmbH

Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung): SQL Reihe auf MSDN-Solve

Embed Size (px)

Citation preview

Page 1: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Neuerungen in T-SQL

Ruprecht DrögeBeConstructed GmbH

Page 2: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Person

Firma (Schulung, Beratung, Softwareentwicklung):

http://www.beconstructed.de

SQL Reihe auf MSDN-Solvehttps://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

Page 3: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve
Page 4: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Agenda

Deklaration und InititialisierungInkrement / DekrementZeilen-KonstruktorTabellen ParameterGrouping SetsNeue DatentypenMergeBackup CompressionLock Escalation

Page 5: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Richtung der Entwicklung

Immer weitreichendere Kompatibilität mit ANSI

z.B. das Semikolon am Anweisungsende in immer mehr Befehlen verpflichtendSollte man sich schon mal angewöhnen ;

Angleichung an andere Programmiersprachen im Microsoft Umfeld

Try Catch etc.Initialisierung und Deklaration

Page 6: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Deklaration und Initialisierung

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

Page 7: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Inkrement und Dekrement

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;

Page 8: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Zeilen-Konstruktor

Das Einfügen mehrerer Zeilen in einem Statement

INSERT INTO tblLaender (id,land)Values(1,'Frankreich'),(2,'Deutschland'), (3,'Großbritanien'),(4,'Italien') ;

Page 9: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Tabelle als Parameter

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 READONLYASSELECT * FROM @Ang;

Ist ein "gewöhnlicher" benutzerdefinierter Typ

SELECT * FROM Sys.types;Oder im SQL Server Management Studio

Page 10: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Grouping Sets

Neue Syntax ANSI Kompatibel

SELECT Planet, Kontinent, Land, AnzahlStaedte=Count(*)

FROM StaedteGROUP BY GROUPING SETS (Planet, Kontinent, Land)

Page 11: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Neue Datentypen: Datum und Zeit

Bisher: (small)Datetime, Datum UND UhrzeitNun:

DATENur 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

Page 12: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Neue Datentypen: HierarchyID

HierarchyIDAbbildung hierarchischer Strukturenz.B. in Firmen

CREATE TABLE MPressOrg(ID int identity primary key,HiD HierarchyID ,Lastname nvarchar(80));GOINSERT INTO MPressOrg VALUES

('/','Braun-Weisholler') ,('/1/','Löffelmann')

,('/2/','Weiherer'),('/1/1/','Raatz'),('/1/2/','Dröge'),('/2/1/','Holert');

.NET DatentypMuss nicht fortlaufend nummeriert seinAuch '/1/1.5/' möglichViele Methoden

Page 13: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Methoden der HierarchyIDGetAncestor(i) (Vorfahr),

Also Einträge der übergeordnete Ebene, i=Anzahl der EbenenGetDescendant(p1,p2) (Nachkomme)

untergeordnete Ebene (bei p1=null, p2=null), oder Abhängig von p1,p2GetLevel

Ebene des aktuellen Wertes GetRoot

WurzelIsDescendant

Ist untergeordnete Ebene Parse

Einlesen von String-WertenRead

Nur zu internen Zwecken bei der Umwandlung varbinary / hierarchyidReparent

Neuzuweisung der übergeordneten Ebene ToString Write

Nur zu internen Zwecken

Page 14: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Ein Beispiel zu ReParentDECLARE @SubjectEmployee hierarchyid , @OldParent

hierarchyid, @NewParent hierarchyidSELECT @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.EmployeeDemoSET OrgNode = @SubjectEmployee.Reparent(@OldParent,

@NewParent) WHERE OrgNode = @SubjectEmployee ;

Page 15: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Neue Datentypen: Geo-Typen

Geo-DatentypenCREATE TABLE SpatialTable ( id int IDENTITY (1,1), GeomCol1 geometry, GeomCol2 AS GeomCol1.STAsText() );GOINSERT INTO SpatialTable (GeomCol1)VALUES (geometry::STGeomFromText('LINESTRING

(100 100, 20 180, 180 180)', 0));

Ebenfalls .NET Implementierung

Page 16: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Unterschiede der Geo-Datentypen

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.

Page 17: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Merge

ANSI Standard SQL 2006"UPSERT"

Also Insert oder Update (oder Delete) in einem Statement

MERGE dbo.PersonenUSING PersonenImport ON Personen.ID=PersonenImport.ID

WHEN MATCHED THENUPDATE SET Personen.Nachname=PersonenImport.Nachname,

Vorname=PersonenImport.VornameWHEN 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 gelesenDaher bessere Performance

Page 18: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Struktur von Merge

MERGEDann Tabellen-Name

USINGRefrenztabelle oder SELECT-Statement

ONVerknüpfung der beiden InformationenWie bei JOIN Ausdrücken

WHEN MATCHED THENAuszuführende Befehle, wenn die in der ON-Klausel angegebenen Werte übereinstimmen

WHEN NOT MATCHED THENAuszuführende Befehle, wenn die in der ON-Klausel angegebenen Werte nicht übereinstimmen

Page 19: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Merge, viele weitere Möglichkeiten

WHEN SOURCE NOT MATCH Auszuführende Befehle, wenn die Werte, die in der ON-Klausel angegeben werden, im USING nicht vorkommen

Mehrere MATCHED AnweisungenWHEN MATCHED AND Lager.Anzahl-Verkauf.Anzahl<=0 THEN

DELETEWHEN MATCHED THEN UPDATE SET Lager.Anzahl=Lager.Anzahl-Verkauf.Anzahl

Page 20: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

Backup Compression

Sehr einfache aber wirkungsvolle Erweiterung

BACKUP DATABASE Test TO DISK=‚C:\Test\Testfull.bak‘ WITH COMPRESSION

Page 21: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

[email protected]

blogs.sqlserverfaq.de

Page 22: Ruprecht Dröge BeConstructed GmbH. Firma (Schulung, Beratung, Softwareentwicklung):  SQL Reihe auf MSDN-Solve

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