Post on 06-Apr-2015
transcript
Neuerungen in T-SQL
Ruprecht DrögeBeConstructed GmbH
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
Agenda
Deklaration und InititialisierungInkrement / DekrementZeilen-KonstruktorTabellen ParameterGrouping SetsNeue DatentypenMergeBackup CompressionLock Escalation
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
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
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;
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') ;
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
Grouping Sets
Neue Syntax ANSI Kompatibel
SELECT Planet, Kontinent, Land, AnzahlStaedte=Count(*)
FROM StaedteGROUP BY GROUPING SETS (Planet, Kontinent, Land)
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
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
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
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 ;
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
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.
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
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
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
Backup Compression
Sehr einfache aber wirkungsvolle Erweiterung
BACKUP DATABASE Test TO DISK=‚C:\Test\Testfull.bak‘ WITH COMPRESSION
droege@beconstructed.de
blogs.sqlserverfaq.de
Ask the ExpertsWir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.