search

searching on site content

1 2 

Article - 26 Aug 2009

Πώς εκτελείται λογικά ένα sql query;

Τόσα χρόνια στον χώρο της πληροφορικής έχω μάθει να προσπαθώ να καταλάβω τι γίνεται πίσω από την σκηνή με αυτό που ασχολούμαι. Ο SQL Server είναι ένα από αυτά, και στο οποίο έχω αφιερώσει αρκετές τρίχες της κεφαλής μου. Σήμερα θα σας πάρω λίγο από τον πολύτιμο χρόνο σας για να σας μεταφέρω μια γνώση που θα σας φανεί αρκετά χρήσιμη.


Article - 28 Dec 2012

Configuring Firewall settings for SQL Server

Είναι κρίμα μερικές φορές να ταλαιπωρούμαστε είτε γιατί δεν γνωρίζουμε τα στοιχειώδη είτε έχει κολλήσει το μυαλό και δεν πάει παρακάτω με τίποτα είτε αυτός που τα θυμάται πάντα δεν είναι παρόν και δεν είναι διαθέσιμος την δεδομένη στιγμή για να τον ρωτήσεις και προχωρήσεις παρακάτω.


Article - 21 Jun 2015

Introduction to Relational Algebra pt1: Ορισμός και παρουσίαση βασικών πράξεων

H Σχεσιακή Άλγεβρα αποτελεί την βάση του σχεδιασμού γλωσσών ερωτημάτων (βλέπε T-SQL), και χρησιμοποιείται από το RDBMS για την μετατροπή των queries σε δεντρική μορφή και τελικά στο optimization αυτών (χρήση του algebrizer, αναπαράσταση execution plans).


Article - 28 Jul 2010

What are the largest SQL projects in the world?

Πρόσφατα έπεσα μούρη με μούρη σε μια παρουσίαση του Kevin Cox που είχε το παραπάνω θέμα. Επειδή είναι αρκετά ενδιαφέρουσα και ρίχνει αρκετούς μύθους αποφάσισα να την μοιραστώ μαζί σας. Ας ξεκινήσουμε με μερικά στατιστικά


Article - 18 Aug 2009

Λίγα λόγια για την TempDb στο SQL Server 2005

Όπως όλοι γνωρίζουμε μια από τις system databases του SQL Server είναι η tempdb. Λίγοι είναι όμως γνωρίζουν το ρόλο αλλά και την σημασία της database αυτής. Και για να γίνω εξ’ αρχής αντιληπτός ο ρόλος της είναι σημαντικός, ζωτικός θα έλεγα για το performance του SQL Server. Ειδικά στον SQL Server 2005 γίνεται «τρελή χρήση» της βάσης αυτής.


Article - 17 Jul 2012

DBCC EXTENTINFO – Another undocumented/documented useful dbcc command

Αρκετές φορές έχω αναφέρει κατά την διάρκεια των μαθημάτων και των παρουσιάσεων που κάνω για την αρχιτεκτονική μιας βάσης, ότι τα data files χωρίζονται σε σελίδες των 8K, κάθε 8 τέτοιες σελίδες αποτελούν ένα extent και ότι υπάρχουν δύο είδη extent τα uniform και τα mixed...


Article - 29 Nov 2010

SQL Server Release History

Κατά την διάρκεια του IT PRO | DEV CONNECTIONS 2010 και ειδικότερα στην παρουσίαση του Γιώργου του Καπνιά αλλά και την δική μου είχα την ευκαιρία να κάνω μερικές ερωτήσεις ώστε αυτός που θα απαντήσει να πάρει κάποιο δώρο. Μία από αυτές τις ερωτήσεις που έκανα ήταν αν γνώριζε κανείς το codename του SQL Server 7. Επειδή δεν το γνώριζε κανείς αποφάσισα να φτιάξω αυτό το post ώστε να αναφέρω τα codenames όλων των εκδόσεων του SQL Server αλλά και διαφόρων επιμέρους τμημάτων του. Έτσι έχουμε την παρακάτω λίστα ...


Article - 17 Feb 2015

Getting Started : Writing T-SQL (Part 1)

Αυτή η σειρά από posts, έχει σκοπό να βοηθήσει κάποιον να κάνει τα πρώτα του βήματα στην χρήση του Microsoft SQL Server και να κάνει μια γνωριμία με την Τransact-SQL.


Article - 13 Sep 2015

Getting Started: Writing T-SQL (Part 5)

Σε αυτό το post θα δούμε τον operator join. Με αυτόν θα μπορέσουμε να συνδυάσουμε πληροφορίες από περισσότερους του ενός πίνακες στο result set μας.


Article - 04 Jan 2012

5 Tips for a Smooth SSIS Upgrade to SQL Server 2012

ΚΑΛΗ ΧΡΟΝΙΑ ΜΕ ΥΓΕΙΑ ΣΕ ΟΛΕΣ ΚΑΙ ΟΛΟΥΣ. Για ακόμα μια χρονιά και εγώ όπως και αρκετοί ακόμα έλαβα το email που με ενημέρωνε ότι συνεχίζω να είμαι MVP στον SQL Server. Τι καλύτερο να γιορτάσω την ανανέωση αυτή με ένα post.


Article - 18 Jul 2015

Introduction to Relational Algebra pt2: Βασικοί σχεσιακοί τελεστές

Συνεχίζοντας από εκεί που είχαμε μείνει στο τέλος του προηγούμενου άρθρου, θα ορίσουμε σε αυτό το δεύτερο μέρος της θεμελίωσής μας για την σχεσιακή άλγεβρα, τους βασικούς σχεσιακούς τελεστές και θα μελετήσουμε πως αυτοί επιδρούν πάω σε μία δοσμένη σχέση.


Article - 26 Apr 2015

Getting Started : Writing T-SQL (Part 2)

Σε αυτό το post θα βάλουμε δεδομένα στους πίνακες που δημιουργήσαμε στο 1o μέρος και θα δούμε τα DML statements.


Article - 23 Oct 2011

TOD : You are not going to say “F***, I ran the test script in the production server!” again

Σαν DBA και DB Developer έχω πολλούς servers/instances του SQL Server τα οποία διαχειρίζομαι. Φαντάζομαι ότι και εσείς θα έχετε αρκετά είναι production είτε development instances. Αρκετές φορές πάνω στην βιασύνη ίσως έχετε τρέξει κάποιο script στο production ενώ δεν θα έπρεπε. Συνήθως αυτό γίνεται διότι έχετε ανοίξει ένα query window το οποίο είναι συνδεδεμένο στο instance που δεν θα έπρεπε να είναι. Αυτό είναι ένα θέμα. Θέλω να ξέρω κάθε φορά σε ποιο instance είμαι συνδεδεμένος.


Article - 05 Jul 2011

DBCC IND

Αν και η συγκεκριμένη εντολή είναι ευρέως γνωστή και σίγουρα θα την έχετε βρει σε διάφορα sites εντούτοις θα γράψω και εγώ για αυτή καθώς θεωρώ ότι είναι μια σημαντική εντολή αν και είναι undocumented.


Article - 25 Mar 2012

To build a DW with Kimball's or Inmon's methodology?

Εισαγωγή Πριν λίγες μέρες η Microsoft Hellas διοργάνωσε την ημερίδα με τίτλο "Microsoft ΒΙ Roadshow 2012". Δυστυχώς δεν μπόρεσα να την παρακολουθήσω. Όμως είδα τα slide decks των παρουσιάσεων και έχω την εντύπωση ότι ήταν πολύ καλή. Από τις παρουσιάσεις υπήρξε κάτι το οποίο μου άρεσε αρκετά...


Article - 16 Aug 2012

Execute Query keyboards shortcuts for SSMS

Άλλοι περισσότερο άλλοι λιγότερο χρησιμοποιούμε το SQL Server Management Studio στην καθημερινότητα μας. Μέσα σε αυτή εκτελούμε και αρκετά queries είτε σε πίνακες της βάσης μας είτε σε metadata tables. Το κάνουμε σχεδόν μηχανικά καθημερινά έτσι δεν είναι; Όπως επίσης είναι γνωστό ότι μπορούμε να δούμε τα αποτελέσματα αυτών σε διαφορετικές μορφές όπως grid, text, file...


Article - 30 Jun 2009

The SQL Server Operating System (SQLOS) – Μέρος 1ο

Πριν προχωρήσω στο αντικείμενο που θέλω να παρουσιάσω θα ήθελα να περιγράψω κάποιες γνωστές έννοιες που θεωρώ ότι είναι καλό να επαναληθούν, μιας και η επανάληψη είναι η μητέρα της μάθησης όπως έλεγαν οι πρόγονοι μας. Κάθε application ( και με αυτό τον όρο συμπεριλαμβάνω και τα services ) μπορεί να εκτελεσθεί πολλές φορές. Κάθε εκτέλεση του application είναι ένα instance.


Article - 14 Jul 2012

Database Data File Special Pages

Διαβάζοντας διάφορα άρθρα διαπίστωσα ότι έχω πολύ καιρό να γράψω κάτι για τα internals του SQL Server και αυτό γιατί σε αρκετά από αυτά είδα ότι για να γίνουν κατανοητά θα πρέπει να έχουν εξηγηθεί κάποια internal objects και ειδικά pages. Με αφορμή αυτό αποφάσισα να γράψω το post αυτό και να αναφερθώ σε όλα αυτά το special pages.


Article - 05 Jul 2009

Παρουσίαση του Activity Monitor στον SQL Server 2008

Πριν ξεκινήσω να περιγράφω το συγκεκριμένο εργαλείο, οφείλω να καταθέσω την άποψη μου γι’ αυτό. ΕΙΝΑΙ ΚΑΤΑΠΛΗΚΤΙΚΟ!!!. Όσοι έχετε ασχοληθεί από παλία με τον SQL Server, προσωπικά ασχολούμαι από την έκδοση 6.0 (1996), θα έχετε παρακολουθήσει την εξέλιξη του συγκεκριμένου εργαλείου. Σε κάθε έκδοση είχαμε κάποιες βελτιώσεις. Όμως στην έκδοση του SQL Server 2008 πιστεύω ότι έχουμε τις περισσότερες αλλά και τις σημαντικότερες βελτιώσεις.


Article - 13 Jun 2015

Getting Started: Writing T-SQL (Part 4)

Σε συνέχεια του προηγούμενου post, θα δούμε τα Aggregate Functions που μπορούμε να χρησιμοποιήσουμε, καθώς και τα GROUP BY και HAVING clauses. Επιπλέον θα δούμε τα φίλτρα TOP και OFFSET – FETCH.


Article - 13 Jan 2012

How to check my queries if they are ANSI compatible? (Tip of the day)

Αρκετές φορές έχω ερωτηθεί και έχω πει την άποψη μου για το τι είναι ANSI Transact SQL και τι όχι, όπως επίσης έχω πει και το πόσο ο SQL Server έχει δώσει βάρος στο να είναι κοντά στο ANSI. Όπως και να έχει όμως είτε θέλω να γράφω pure ANSI επειδή ενδεχομένως να θέλω portability είτε γιατί απλά είμαι περίεργος και θέλω να ξέρω αυτό που γράφω πόσο ANSI είναι , μπορώ το κάνω απλά χρησιμοποιώντας...


Article - 12 Feb 2012

Logical Query Processing by Itzik Ben-Gan

...


Article - 26 Jun 2016

Query for information about pages in buffer cache

Ένα query που μπορούμε να χρησιμοποιήσουμε για να μαζέψουμε χρήσιμες πληροφορίες για τα data pages που βρίσκονται στην buffer pool του SQL Server


Article - 14 Aug 2011

How to execute an SSIS Package form a .NET Application.

Συχνά έχω την ερώτηση από μαθητές μου αλλά και από συνεργάτες που ήταν συνηθισμένοι με τα SQL Server 2000 DTS όπου υπήρχε η δυνατότητα να κάνουν export αυτά σε VB code module και να τα καλούν μέσα από τις εφαρμογές τους, πως μπορούν να κάνουν το ίδιο ή σχεδόν το ίδιο με τα SSIS packages.


Article - 06 May 2012

Setting Network Package Size server option for best performance

Είναι γνωστό ότι οι λεπτομέρειες κάνουν τον πρωταθλητή και σε αυτό δεν νομίζω ότι έχει κάνεις αντίρρηση. Ένα tip το οποίο μπορώ να δώσω σήμερα για τον SQL Server μπορεί να είναι μια μικρή λεπτομέρεια που όμως μπορεί να εξακοντίσει το performance του SQL Server στα ουράνια. Ένα από τα advanced options του SQL Server είναι το Network Packet Size το οποίο by default είναι στα 4096 bytes.


Article - 16 Nov 2011

SQL Server 2012 – Database Engine Tuning Advisor Enhancements

Ένα από τα εργαλεία τα οποία έχουμε στην διάθεση μας για να κάνουμε tuning τον SQL Server είναι και ο Database Engine Tuning Advisor (DTA). Ένα αρκετά καλό εργαλείο που μπορείς εύκολα να πάρεις σχεδόν άμεσα απάντηση που θα σου βελτιώνει το performance στα queries σου. Μέχρι τώρα η τροφή που έπρεπε να δώσεις στο εργαλείο αυτό ήταν ή ένα trace workload ή ένα script με τα queries που ήθελες να ελέγξεις.


Article - 19 Sep 2011

TOD: Using Hotmail Account with SQL Server DB Mail

Για όσους θέλουν να χρησιμοποιήσουν ένα hotmail account σαν SMTP account για το SQL Server Database Mail θα πρέπει να κάνουν τις ρυθμίσεις σε αυτό όπως φαίνονται στην παρακάτω εικόνα...


Article - 25 Jul 2011

How to improve performance during opening process of SSMS

Εάν έχετε βαρεθεί να περιμένετε να ανοίξει το SQL Server Management Studio υπάρχει λύση...


Article - 30 May 2010

C2 Level Auditing with SQL Server

Πριν από μερικές μέρες μου ήρθε ένα ερώτημα από ένα φίλο για το τι είναι το C2 Level Auditing στον SQL Server. Δράττω την ευκαιρία αυτή για να το εξηγήσω σε όλους όσους ενδιαφέρονται να παρακολουθήσουν στενότερα το περιβάλλον τους στον SQL Server. Εδώ και πολλά χρόνια όπως ξέρουμε τεράστια ποσά έχουν δαπανηθεί στο να έχουμε ασφαλή συστήματα. Αυτό γίνεται με το να οροθετούνται συνεχώς νέα πρότυπα και standards.


Article - 14 Nov 2011

SQL Server 2012 - Backup Timeline feature

Όσοι ασχολούμαστε καθημερινά με τον SQL Server και το πρώτο πράγμα που κάνουμε το πρωί πριν ακόμα πιούμε την πρώτη τζούρα καφές είναι σχεδόν σίγουρο ότι όταν θα χρειαστεί να κάνουμε κάποιο restore σε μια database γνωρίζουμε εξ αρχής σε ποιο χρονικό σημείο θα γυρίσουμε. Παρόλα αυτά όμως κάνουμε επιβεβαίωση χρησιμοποιώντας διάφορες τεχνικές κυρίως με T-SQL commands.


Article - 19 Jul 2011

Επιτέλους Ελληνικά στο Full Text Search του SQL Server DENALI

Όταν για πρώτη φορά εμφανίστηκε το συγκεκριμένο feature στον SQL Server 7.0 ίσως να ήμουν ο πρώτος στην Ελλάδα που το χρησιμοποίησα σε παραγωγικό περιβάλλον. Παρόλα αυτά όμως δεν υπήρχε η υποστήριξη της ελληνικής γλώσσας και αυτό με είχε στεναχωρίσει ιδιαίτερα. Αυτό σήμαινε ότι δεν μπορούσα να ψάξω με την ρίζα της λέξης.


Article - 15 Mar 2016

TOP WITH TIES

Σε αυτό το post θα δούμε την επιλογή WITH TIES την οποία μπορούμε να χρησιμοποιήσουμε μαζί με το TOP.


Article - 17 May 2015

Getting Started : Writing T-SQL (Part 3)

Σε αυτό το μέρος της σειράς των posts μας για εισαγωγή στην T-SQL θα ασχοληθούμε με το SELECT statement


Article - 16 Sep 2015

The ARITHABORT and ROUND_ABORT settings

Είναι γνωστό ότι στον SQL Server υπάρχουν διάφορα SET options που καθορίζουν την συμπεριφορά του με συγκεκριμένους τρόπους. Σε αυτό το post, θα μιλήσουμε για τι είδους έλεγχο μας δίνουν τέτοια options σε περίπτωση "προβληματικών" αριθμητικών πράξεων. Πιο συγκεκριμένα, θα δούμε τα ARITHABORT και NUMERIC_ROUNDABORT settings.


Article - 23 Apr 2012

Restore Page Dialog in SSMS - New feature in SQL Server 2012

Μιας και με το χθεσινό μου post είδαμε κάποια νέα καλούδια του SQL Server 2012, λέω και σήμερα να συνεχίσω σε αυτή την κατηγορία με αυτό το post.


Article - 03 Aug 2012

Your database in numbers

Πρωινή συζήτηση με συνάδελφο η οποία έφτασε να αξιολογούμε βάσεις και να μετράμε αντικείμενα σε αυτές. Κάποια στιγμή γράφω το παρακάτω query για να δω ανά object type τι πλήθος αντικειμένων έχω σε αυτό και ο συνάδελφος εντυπωσιάστηκε. Αν ποτέ το χρειαστείτε είναι το παρακάτω...


Article - 12 Apr 2012

Auditing Enhancements in SQL Server 2012

Επειδή μερικά πράγματα πρέπει να τα κλείνεις γρήγορα έτσι σήμερα με αυτό το post θα καλύψω μια από τις υποσχέσεις που έδωσα στο τελευταίο μου post και θα μιλήσω σε αυτό για τις βελτιώσεις που έχουμε για auditing στο SQL Server 2012.


Article - 13 Oct 2011

The SQL Server Utility

Το πρόβλημα Σαν DBA και ειδικά σε enterprise environments έχουμε το καθήκον να διαχειριζόμαστε ένα αρκετά σημαντικό αριθμό από SQL Server instances που υπάρχουν διάσπαρτα μέσα στο οργανισμό ή την εταιρεία στην οποία εργαζόμαστε. Αυτό σημαίνει ότι πρέπει καθημερινά να παρακολουθούμε την πορεία αυτών των instances ώστε προληπτικά και όχι πυροσβεστικά να δίνουμε λύσεις σε issues που τυχόν θα εμφανιστούν.


Article - 07 Sep 2009

SQL Server Query for Index Recommendation

Το παρακάτω query είναι πάρα πολύ καλό!!!. Το ξαναβρήκα τυχαία μπροστά μου καθώς σκάλιζα τα διάφορα scripts που έχω στην βιβλιοθήκη μου. Αν θυμάμαι καλά, γιατί έχει περάσει καιρός, το έχει φτιάξει ένα παλικάρι από την μαμά εταιρία, νομίζω ότι είναι ο Swapnil Bajaj.


Article - 01 Feb 2012

How to use specific values in parameters of fn_dblog function

Μια από τις αγαπημένες functions που την χρησιμοποιώ αρκετά συχνά ιδιαίτερα σε περιπτώσεις που υπάρχει κάποιο πρόβλημα με συγκεκριμένη βάση είναι η fn_dblog. Παρόλο που είναι μια undocumented function εντούτοις είναι ευρέως γνωστή και φυσικά χρησιμοποιούμενη σε όσους σοβαρά ασχολούνται με τον SQL Server.


Article - 30 Aug 2011

Do you have "Optimize for Ad Hoc Workloads" on SQL Server 2008 & R2 instances?

Πριν από ένα μήνα είχα αναρτήσει μια δημοσκόπηση στο site του SqlSchool.gr με την εξής ερώτηση: Έχετε ενεργοποιήσει το "Optimize for Ad Hoc Workloads" στα instances του SQL Server 2008 & R2 που έχετε;...


Article - 11 Mar 2012

Indirect Checkpoints in SQL Server 2012

Μέσα στα τόσα νέα features που υπάρχουν στον SQL Server 2012 κάποια είναι δημοφιλέστερα από κάποια άλλα. Κάποια τραβάνε εύκολα την προσοχή γιατί πουλάνε περισσότερο κάποια άλλα όχι. Για τα πρώτα θα βρείτε αρκετά άρθρα στον ιστό. Για τα δεύτερα, αυτά που δεν φαίνονται με γυμνό μάτι θα βρείτε λίγα ή καθόλου. Αυτά τα δεύτερα όμως είναι αυτά που κάνουν την ουσιαστική διαφορά και είναι η πεμπτουσία, πάντα κατά την ταπεινή μου γνώμη, στον SQL Server.


Article - 22 Aug 2017

What is the best method to delete huge number of rows?

Όλοι σχεδόν έχουμε έρθει αντιμέτωποι με το πως θα σβήσουμε ένα μεγάλο αριθμό εγγραφών από ένα πίνακα σε μια βάση χωρίς αυτό να επιβαρύνει το σύστημα τόσο σε πόρους όσο και σε locks.


Article - 01 Jan 2011

MVP Award 2011, re-awarded!

Τελικά ο Αη Βασίλης ήρθε και για μένα. Για δεύτερη χρονιά μου απονεμήθηκε ο τίτλος του MVP στον SQL Server. Αυτό σημαίνει περισσότερες ευθύνες για μένα, αλλά ευχάριστες. Η χρονιά αυτή θα συνεχιστεί με περισσότερη δράση και περισσότερα SQL Saturday Nights. Καλή Χρονιά σε όλους και σας ευχαριστώ για την υποστήριξη.


Article - 12 Jan 2012

SSMS Command Line Arguments (Tip of the day)

Από το βασικότερα εργαλεία για όσους ασχολούνται με τον SQL Server είναι το SQL Server Management Studio (SSMS).


Article - 20 Jul 2009

Script for Full database backup in separate device per day with SQLCMD Tool

Επειδή ο φίλος Αθανάσιος το ζήτησε για να μην του χαλάσουμε το χατήρι. Αποθηκεύουμε το παρακάτω script σε ένα άρχειο στο δίσκο μας πχ. backup.sql ...


Article - 19 Oct 2010

SSRS Report Viewer Control on IIS 7

Σήμερα ανέβαζα ένα project σε production το οποίο ήταν ένα Web Application σε .ΝΕΤ όπου χρησιμοποιούσαμε το Report Viewer Control για να δείχνουμε τα reports που η εφαρμογή έχει. Ενώ σε όλα τα στάδια ανάπτυξης και τεστ δεν είχαμε κάποιο θέμα μόλις ανέβηκε στην παραγωγή άρχισαν τα τηλέφωνα από τον πελάτη και μου στέλνουν και ένα mail με ένα screen dump όπου το control αυτό δεν έκανε τίποτα τα είχε δει όλα.


Article - 26 Sep 2009

Πώς να “σκοτώσω” τα ανενεργά connections στον SQL Server

Αφορμή για αυτό το post είναι ο Blackman. Σε μια ωραία συζήτηση που είχαμε μου εξέφρασε την επιθυμία για αυτό επειδή μια εφαρμογή που έχει του αφήνει ανοικτά sessions. Σε αυτό το σημείο θα πρέπει να αναφέρω ότι κάτι τέτοιο μπορεί να συμβεί είτε διότι η εφαρμογή δεν έχει γραφτεί σωστά, είτε έπειδή ο σταθμός εργασίας που έχει ανοίξει το session σταμάτησε να λειτουργεί είτε η εφαρμογή σταμάτησε απότομα.


Article - 20 Jul 2009

Script for Full database backup in separate device per day

Πριν από λίγο ένας συνεργάτης μου, που έχει πολλούς πελάτες με ERP που είναι σε SQL Server μου ζήτησε να παίρνει backup σε ημερήσια εβδομαδιαία βάση αυτοματοποιημένα. Δηλαδή ένα backup για κάθε database (full βεβαια) κάθε μέρα της εβδομάδας, και την επόμενη εβδομάδα να γράφει πάνω στο προηγούμενο της αντίστοιχης ημέρας. Η λύση είναι απλή...


Article - 19 Aug 2009

Export data to Excel File using pure T-SQL

O SQL Server έχει αρκετά εργαλεία για να κάνεις export & import data. Από τα απλά T-SQL BULK INSET ή το κλασσικό BCP μέχρι τα DTS (Data Transformation Services) και σήμερα τα SSIS ( SQL Server Integration Services). Όμως υπάρχουν αρκετές περιπτώσεις που δεν θα ήθελες να εμπλακείς με αυτά. Ένα σενάριο το οποίο κάποια στιγμή σε ένα project μου έτυχε ήταν η απαίτηση να πατάει ο χρήστης ένα κουμπί και να γίνονται τα δεδομένα export σε Excel αρχείο. Για να δούμε λοιπόν την υλοποίηση του ...


1 2 
Follow us in
PASS chapter logo

The Official PASS Local Group for Greece

sql school greece logo
© 2010-2019 All rights reserved