Datenbank Forum - für Anfänger und Profis

Willkommen im Datenbank Forum von Datenbanken-verstehen.de - Das Datenbank, Data Warehouse & Business Intelligence Forum!

Das Datenbank Forum für Anfänger und Profis ist eine Community zu den Themen Datenbanken, Data Warehouse & Business Intelligence. Nimm teil an der Community von Datenbanken-verstehen.de und tausch dich mit deinen Fragen und Lösungen mit anderen Nutzern aus.

Als registrierter Benutzer genießt Du viele Vorteile, wie

  • den vollen Zugang zu allen Foren und Unterforen
  • Kostenloses Lernmaterial inkl. Lösungen zum Thema Datenbanken
  • Zugriff auf DB-Tutorials, Best Practices und SQL-Snippets

Bevor Du einen Beitrag verfassen möchtest, kannst Du dich einfach kostenlos registrieren.

oder Einloggen mit



Beachte bitte die Forenregeln von Datenbanken-verstehen.de. Wir wünschen Dir viel Spaß im Datenbank Forum! - Dein Datenbanken-verstehen.de-Team

T-SQL View ORDER BY nicht mehr möglich

Hier werden alle Data Warehouse-Themen im Microsoft-Umfeld behandelt...

T-SQL View ORDER BY nicht mehr möglich

Beitragvon RainerH » Di 21. Apr 2015, 10:09

Hallo zusammen,

ich benutze seit Kurzem den SQL Server 2014.
Nun habe ich folgendes Statement zur Erstellung einer VIEW inkl. ORDER BY erstellt:
Code: Alles auswählen
USE [AdventureWorksDW2014]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER View [dbo].[v_FactInternetSalesNew] AS
SELECT Top 100 PERCENT [ProductKey]
FROM [dbo].[FactInternetSalesNew] ORDER BY [ProductKey] DESC
GO

Leider wird das Resultset nicht mehr sortiert!?
Hat sich was in der Version 2014 vom SQL Server geändert?
Nimm NICHTS persönlich -- alles ist Feedback...
RainerH
 
Beiträge: 220
Registriert: Fr 1. Nov 2013, 17:58

Re: T-SQL View ORDER BY nicht mehr möglich

Beitragvon MPR » Di 21. Apr 2015, 11:57

habe keinen SQL Server 2014 zur Hand und auch noch nicht damit gearbeitet und auch keine Erinnerung an eine entsprechende Information.

Aber ich würde mir in einem solchen Fall zunächst anschauen, ob die Definition im Data Dictionary den Erwartungen entspricht und ggf. den Execution Plan überprüfen, um festzustellen, ob darin Hinweise auf eine übersprungene Sortierung zu finden sind.
MPR
 
Beiträge: 3
Registriert: Mo 30. Jun 2014, 09:19

Re: T-SQL View ORDER BY nicht mehr möglich

Beitragvon RainerH » Di 21. Apr 2015, 12:17

Hallo MPR,

tatsächlich überspringt der Execution Plan das TOP 100 PERCENT mit dem ORDER BY-Statement.
Wenn ich ein TOP (max Zahl des Datentyps) angeben würde, funktioniert es.

Genauso, wenn man SELECT TOP 99.99 PERCENT eingibt, aber das ist ja keine Lösung.

Ich würde gerne aber das Top 100 PERCENT nehmen, da es ja ein anerkannter Workaround ist.
Nimm NICHTS persönlich -- alles ist Feedback...
RainerH
 
Beiträge: 220
Registriert: Fr 1. Nov 2013, 17:58

Re: T-SQL View ORDER BY nicht mehr möglich

Beitragvon MPR » Di 21. Apr 2015, 14:16

die Begeisterung für den Workaround scheint sich bei vielen Experten in Grenzen zu halten: offenbar war das ein Relikt aus der 2000er Version, das sich bis in jüngere Releases gehalten hatte, aber nie offiziell dokumentiert wurde. Außerdem scheint es seit 2005 nicht mehr so recht zuverlässig gewesen zu sein. Aaron Bertrand liefert in http://sqlblog.com/blogs/aaron_bertrand ... later.aspx eine deutlich negative Bewertung, zeigt aber auch, dass das Feature noch im SSMS für Release 2012 seine Spuren hinterlassen hat. Aber angesichts seiner Bewertung würde mich nicht wundern, wenn Release 2014 hier tatsächlich eine Verhaltensänderung mit sich gebracht haben sollte.
MPR
 
Beiträge: 3
Registriert: Mo 30. Jun 2014, 09:19

Re: T-SQL View ORDER BY nicht mehr möglich

Beitragvon Yellow » Di 21. Apr 2015, 16:13

Hallo RainerH,

ich finde, das "Order By" gehört in die Abfrage auf die View und nicht in die View.

Hier ist auch noch mal ein schöner Artikel von Kimberly Tripp aus 2006
http://www.sqlskills.com/blogs/kimberly/sql-2000-v-2005-using-top-100-percent-in-a-view/

-yellow
Yellow
 
Beiträge: 77
Registriert: Do 8. Mai 2014, 16:46

Re: T-SQL View ORDER BY nicht mehr möglich

Beitragvon RainerH » Di 21. Apr 2015, 18:28

Hallo zusammen,

danke für die Links, aber ich brauchte noch den alten Workaround(TOP 100 PERCENT) für ein spezielles Problem.

Gruß,
Rainer
Nimm NICHTS persönlich -- alles ist Feedback...
RainerH
 
Beiträge: 220
Registriert: Fr 1. Nov 2013, 17:58

Re: T-SQL View ORDER BY nicht mehr möglich

Beitragvon Yellow » Mi 22. Apr 2015, 10:10

Hallo RainerH,

und du bist dir wirklich sicher, dass sich dein spezielles Problem nicht auch anders lösen lässt?

-yellow
Yellow
 
Beiträge: 77
Registriert: Do 8. Mai 2014, 16:46

Re: T-SQL View ORDER BY nicht mehr möglich

Beitragvon RainerH » Mi 22. Apr 2015, 15:31

Hey yellow,

naja ich finde die Variante auch unschön, aber sie ist allgemein(Internet) als Workaround anerkannt.

Ich habe jetzt noch eine weitere Variante gefunden, die keinen Fehler wirft:
Code: Alles auswählen
ALTER View [dbo].[v_FactInternetSalesNew] AS
SELECT [ProductKey],ROW_NUMBER() OVER (ORDER BY [ProductKey] DESC) AS RowNum
FROM [dbo].[FactInternetSales]

Was haltet ihr davon?
Nimm NICHTS persönlich -- alles ist Feedback...
RainerH
 
Beiträge: 220
Registriert: Fr 1. Nov 2013, 17:58

Re: T-SQL View ORDER BY nicht mehr möglich

Beitragvon Yellow » Mi 22. Apr 2015, 18:12

Hallo RainerH,

den Einsatz einer Window-Funktion finde ich besser. Allerdings, nur weil ein Workaround allgemein anerkannt ist, muss man diesem nicht blind folgen. Ich bin nachwievor kein Freund davon eine View zu sortieren. Das schränkt in meinen Augen den Verwendungszweck ein. Sicher sein, ob die Sortierung so ist wie du sie in einem konkreten Fall brauchst, kannst du nur wenn du in deiner Abfrage nochmal ein order by anführst. Was ist wenn du die View an mehreren Stellen verwendest und dich auf die Sortierung verlässt und dann die Sortierung in der View geändert wird? Oder wenn du die View nutzen möchtest aber eine andere Sortierung nutzen möchtest, dann musst du doppelt sortieren. Sortieren ist relativ "teuer".

-yellow

PS: In deinem ersten Beispiel hast du noch eine View auf die [dbo].[FactInternetSalesNew] gemacht. :P
Yellow
 
Beiträge: 77
Registriert: Do 8. Mai 2014, 16:46

Re: T-SQL View ORDER BY nicht mehr möglich

Beitragvon RainerH » Sa 25. Apr 2015, 14:42

Stimmt, da hast Du Recht 8-)

So sollte es eigentlich aussehen:
Code: Alles auswählen
ALTER View [dbo].[v_FactInternetSalesNew] AS
SELECT [ProductKey],ROW_NUMBER() OVER (ORDER BY [ProductKey] DESC) AS RowNum
FROM [dbo].[FactInternetSalesNew]

Da die View nur an einer Stelle benötigt wird und auch dokumentiert ist, sollte der Workaround in Ordnung sein.
Ich habe noch ein paar intensive Test durchgeführt und glaube nun, dass das Top 100 Percent im SQL 2014 nicht mehr funktioniert.

Die Window-Function scheint die neue Alternative für ein Top 100 Percent zu werden, wenn man das Übel hinnehmen kann.
Nimm NICHTS persönlich -- alles ist Feedback...
RainerH
 
Beiträge: 220
Registriert: Fr 1. Nov 2013, 17:58


Zurück zu Microsoft Data Warehouse

 


  • Related topics
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
  • Jetzt Fan werden
  • Newsletter abonnieren? Hier anmelden!

    Alle Informationen aus dem Portal, Blog und Forum in einem Newsletter!

    E-Mail-Adresse: