13 Jun 2021
Failed to generate a checkpoint in a database
Πρόσφατα κλήθηκα να διορθώσω μια corrupted database με αρκετά μεγάλο αριθμό corrupted pages. Η διαδικασία επιδιόρθωσης ήταν επίπονη και πήρε αρκετές ημέρες αλλά τελικά ολοκληρώθηκε. Με την ολοκλήρωση της διαδικασίας ζήτησα να γίνει full backup καθώς τα ήδη υπάρχοντα backups ήταν και αυτά corrupted καθώς περιείχαν τις corrupted pages.
Κατά την διάρκεια του full backup όμως εμφανίστηκε ένα νέο μήνυμα λάθους που έλεγε το εξής...
23 Nov 2020
The undocumented ATTACH_FORCE_REBUILD_LOG
Στην δουλειά του DBA υπάρχουν στιγμές που πραγματικά οι παλμοί ανεβαίνουν επικίνδυνα. Συνήθως αυτό συμβαίνει ότι υπάρχει το ενδεχόμενο απώλειας δεδομένων.
15 Feb 2015
Memory Configuration in Analysis Services
Μέσα από το SQLschool.gr έχω αρκετές φορές επισημάνει το πώς πρέπει να ορίζουμε την μνήμη ενός instance. Αυτό που μέχρι τώρα δεν είχα κάνει είναι να αναφερθώ στο πως ορίζουμε την μνήμη ενός Analysis services instance.
13 May 2012
Error 1205 or a deadlock occurred, how to deal with it?
Το τελευταίο διάστημα στα μαθήματα και τις παρουσιάσεις που έχω κάνει όλο και περισσότεροι έρχονται και με ρωτούν τι πρέπει να κάνουν για το deadlock καθώς όπως μου λένε έχουν όλο και περισσότερες εμφανίσεις του φαινομένου αυτού. Πάντα απαντώ σε όλους αυτά που θα ακολουθήσουν σε αυτό το post αλλά μέχρι τώρα δεν τα είχα γράψει και νομίζω ότι πλέον είναι καιρός να γίνει αυτό. Τι είναι το deadlock;
04 Jan 2012
5 Tips for a Smooth SSIS Upgrade to SQL Server 2012
ΚΑΛΗ ΧΡΟΝΙΑ ΜΕ ΥΓΕΙΑ ΣΕ ΟΛΕΣ ΚΑΙ ΟΛΟΥΣ. Για ακόμα μια χρονιά και εγώ όπως και αρκετοί ακόμα έλαβα το email που με ενημέρωνε ότι συνεχίζω να είμαι MVP στον SQL Server. Τι καλύτερο να γιορτάσω την ανανέωση αυτή με ένα post.
23 May 2011
Tip of the Day: AWE in 64 bit systems
Στον SQL Server υπάρχει το option AWE (μπορεί κανείς να το αλλάξει είτε με δεξί κλικ στον όνομα του server μέσα από το SSMS Properties\Memory είτε με την χρήση της sp_configure).
01 Sep 2009
System.InvalidOperation Exception μέσα από CLR Trigger
Καλημέρα και καλό μήνα σε όλους. Σήμερα έπεσα πάνω σε ένα μήνυμα λάθους το οποίο με προβλημάτισε αρκετά. Μέσα από ένα CLR Trigger έπαιρνα το παρακάτω μήνυμα λάθους A .NET Framework error occurred during execution of user-defined routine or aggregate ...
06 Jan 2020
Let's talk about Backup related wait types
Backup/Restore δύο τόσο συνηθισμένες εργασίες που όμως γίνονται τόσα λάθη σε αυτές που πολλές φορές έχουν τραγικά αποτελέσματα. Σε αυτό το άρθρο θα ασχοληθώ με τα wait types που αφορούν τις διαδικασίες αυτές και τα οποία θα βοηθήσουν, θεωρώ, στην κατανόηση τους.
05 May 2011
Κάθε πότε γίνεται η διαδικασία CHECKPOINT? (UPDATED)
Όπως είναι γνωρίζουμε στον SQL Server υπάρχει μια διαδικασία η οποία σκοπό έχει να μεταφέρει από την Buffer Cache τις αλλαγμένες σελίδες στο δίσκο, γίνεται σε όλες τις βάσεις εκτός από την tempdb (αν και αυτό δεν είναι και τόσο αλήθεια αλλά δεν θα το αναλύσουμε εδώ). Σκοπός του είναι να είναι όσο το δυνατό πιο ενημερωμένα τα data files με τις αλλαγές είναι γραμμένες στο log.
07 Oct 2017
SOME T-SQL IMPLICIT CASTING TRAPS
Είναι γνωστό ότι τα implicit casts κρύβουν κινδύνους και ειδικά μέσα στα queries μας τα αποφεύγουμε. Παρόλα αυτά είναι καλό να ξέρουμε πως συμπεριφέρονται στον SQL Server και τι να περιμένουμε στο αποτέλεσμα.
16 Sep 2015
The ARITHABORT and ROUND_ABORT settings
Είναι γνωστό ότι στον SQL Server υπάρχουν διάφορα SET options που καθορίζουν την συμπεριφορά του με συγκεκριμένους τρόπους. Σε αυτό το post, θα μιλήσουμε για τι είδους έλεγχο μας δίνουν τέτοια options σε περίπτωση "προβληματικών" αριθμητικών πράξεων. Πιο συγκεκριμένα, θα δούμε τα ARITHABORT και NUMERIC_ROUNDABORT settings.
28 Aug 2010
SQL Server Reporting Services 2008 R2 Architecture - Part I
Οι περισσότεροι σχεδόν χρησιμοποιούν τα SSRS στην καθημερινότητα τους καλύπτοντας τις ανάγκες τους σε reporting. Πρόσφατα είχα μια ενδιαφέρουσα ερώτηση από έναν εκλεκτό φίλο και συνάδελφο σχετικά με αυτά, έτσι μου γεννήθηκε η ιδέα να γράψω το post αυτό.
14 Mar 2010
Lesson: Backup/Restore in SQL Server 2008
Βλέποντας μέσα από το forum μας διάφορες συζητήσεις σχετικά με το θέμα του μεγέθους του transaction log (T-Log) διαπίστωσα ότι υπάρχει ένα θολό τοπίο γύρω από το θέμα disaster recovery (backup - restore) πάνω στον SQL Server. Πήρα την απόφαση να γράψω για αυτό το θέμα ώστε να το ξεκαθαρίσω μια και καλή διότι είναι τόσο απλό και τόσο δυνατό που είναι αμαρτία από το Θεό να παιδεύεται ο κόσμος.
04 Apr 2012
Considerations on Data Transformation Phase during ETL process
Σε συνέχεια των προηγούμενων μου post που σχετίζονται με την διαδικασία ETL με την οποία μεταφέρονται τα δεδομένα από την πηγή στο DW στα οποία είδαμε τι πρέπει να προσέξουμε στην φάση extract και στην χρήση της staging area, έφτασε η στιγμή να μιλήσουμε για την φάση του data transformation. Η φάση αυτή είναι ίσως η δυσκολότερη σε σχέση με τις άλλες και μάλιστα απαιτεί και περισσότερο χρόνο ανάπτυξης.
07 Dec 2009
Implement Database Mirroring in SQL Server 2008
Ένα από τα πράγματα τα οποία προσωπικά θεωρώ από τα διαμάντια του SQL Server που έχουμε διαθέσιμα από την έκδοση του SQL Server 2005 (Standard & Enterprise) SP1 είναι το Database Mirroring. Μέχρι την εμφάνιση του για να έχω αυτό που όλοι θέλουμε και δεν είναι άλλο από το database availability έπρεπε να καταφύγουμε σε κάποιες λύσεις όπως...
14 Jul 2009
SQL Service Broker - Μέρος 1ο (Εισαγωγή)
Εδώ και καιρό ήθελα να ασχοληθώ και να γράψω ένα άρθρο με αυτό το θέμα. Ένα θέμα το οποίο προσωπικά θεωρώ ότι είναι από τα καλύτερα και δυνατότερα κομμάτια του SQL Server. Με το που το είδα στον SQL Server 2005 (εδώ εμφανίστηκε για πρώτη φορά) έκανα σαν μωρό παιδί που του πήρανε καινούργιο παιχνίδι. Και αυτό γιατί όπως οι περισσότεροι γνωρίζεται είμαι στην μεριά των developers.
09 Oct 2021
Keep DBCC CHECKDB output and history
Η εκτέλεση της γνωστής DBCC CHECKDB είναι αυτό που πρέπει να γίνεται καθώς είναι αυτή που ελέγχει την database. Το αποτέλεσμα της είναι κάτι που πρέπει να μελετούμε σχολαστικά μετά από κάθε εκτέλεση της και σε αρκετές περιπτώσεις ίσως θα πρέπει να το συγκρίνουμε με παλαιότερες εκτελέσεις.
13 Jan 2016
How to activate the Blocking Process Report
Μια συνηθισμένη ημέρα στη δουλεία είναι αρκετά ενδιαφέρουσα. Ιδιαίτερα όταν έχεις να προσέχεις μεγάλο αριθμό από SQL Server instance και databases που γίνονται access από εφαρμογές που μπορεί να χρησιμοποιούνται από χιλιάδες αλλά και εκατομμύρια χρήστες. Όσο καλά να είναι όλα φτιαγμένα πάντα μα πάντα θα υπάρξει αυτό που θα σε κάνει να σηκώσεις τα μανίκια για να βρεις αρχικά τι είναι και έπειτα να δώσεις λύση.
24 Apr 2017
TRY… CATCH with Extended Event
Από το SQL Server 2005 έχουμε στην διάθεση μας το TRY…CATCH με το οποίο μπορούμε να έχουμε ένα δομημένο exception handling και πραγματικά είμαστε όλοι ευχαριστημένοι με αυτό.Παρόλο που αυτό κάνει εξαιρετικά την δουλειά του και πιάνει πραγματικά όλα τα run time exceptions υπάρχει κάτι που συμβαίνει και που οι περισσότεροι πιστεύουν ότι είναι limitation σε αυτό (κατά την γνώμη μου δεν είναι).
16 May 2021
What is the Lock Page in Memory, When and How I enable it
Lock Pages in Memory (LPIM) είναι η δυνατότητα που δίνεται απο τα Windows και η οποία αποτρέπει το paging της virtual memory στο δίσκο. Αυτό το επιτυχάνει καθώς "κλειδωνει" τα δεδομένα αυτά στην φυσική μνήμη και όταν υπάρχει το φαινόμενο που ονομάζουμε memory pressure αυτά δεν γίνονται paging στο δίσκο.
14 Oct 2014
Using T-SQL commands to read SQL log files
Ένας DBA στην καθημερινότητα του χρειάζεται να διαβάζει αρκετές φορές τα logs που ο SQL Server παράγει είτε για το ίδιο το SQL Server service είτε για το SQL Server Agent service.
Φυσικά και υπάρχει γραφικό περιβάλλον που μπορεί εύκολα κανείς να κάνει αυτό. Υπάρχει όμως και μη γραφικός τρόπος που διευκολύνει περισσότερο, κατά την γνώμη μου, στην ανάγνωση των logs ιδιαίτερα όταν αυτά έχουν μεγάλο όγκο από καταχωρήσεις.
16 Jun 2014
Unique Indexes Vs Filter Indexes
Σε ένα προϊόν σαν τον SQL Server που είναι περίπλοκο και περιέχει αρκετή περιπτωσιολογία είναι φυσικό όσοι ασχολούνται περιστασιακά ή επιφανειακά μαζί του να μπερδεύουν κάποια πράγματα και να βγάζουν λάθος συμπεράσματα. Σε αυτή την περίπτωση καλό θα είναι να μπαίνουν όλα σε μια σειρά.
03 Apr 2018
How can I find discontinued/deprecated features?
Πρόσφατα έλαβα μια ερώτηση για το πως μπορούμε να βρούμε τα discontinued / deprecated features στο τρέχων SQL Server instance μας το οποίο θέλουμε να κάνουμε migrate σε επόμενη έκδοση.
Αρχικά θα πρέπει να επισημάνω ότι ο SQL Server είναι ίσως το μοναδικό προϊόν που έχει η Microsoft που με συνέπεια χρόνια τώρα αναφέρει σε κάθε έκδοση που βγαίνει τι δεν θα υποστηρίζεται στην επόμενη έκδοση και τι πρόκειται να μην υποστηρίζεται σε επόμενες εκδόσεις. Αυτό σημαίνει ότι μου δίνεται η δυνατότητα να προγραμματίσω με άνεση τις αλλαγές που χρειάζεται να γίνουν ώστε να έχω ομαλή μετάβαση σε επόμενη έκδοση.
20 Oct 2019
Useful Extended Events scenarios
Είναι γνωστό, εδώ και 7 χρόνια, ότι ο SQL Server Profiler είναι σε κατάσταση απόσυρσης και ότι ο διάδοχος τους είναι τα Extended Events. Με αυτά μπορούμε να κάνουμε πολλά πράγματα που μας βοηθούν στον εντοπισμό και την επίλυση προβλημάτων.
27 Mar 2017
The XACT_ABORT setting
Ένα από τα statements που έχουν δημιουργήσει και συνεχίζουν να δημιουργούν σύγχυση είναι το XACT_ABORT.
Αν και η περιγραφή του συγκεκριμένου set statement είναι αρκετά σαφής όπως περιγράφεται μέσα στα books online (BOL) του SQL Server εντούτοις μια μικρή λεπτομέρεια που κανείς δεν προσέχει κάνει την διαφορά.
24 May 2018
The money data type
Σήμερα είχα μια ερώτηση από ένα συνάδελφο σχετικά με το συγκεκριμένο data type αφού πρώτα είχαμε κάνει μια εσωτερική εκπαίδευση πριν από αρκετές μέρες και σε αυτή είχαμε μιλήσει για τα data types που έχει ο SQL Server.
08 May 2017
Intra-query parallelism deadlock
Το τελευταίο καιρό ασχολούμαι με την υποδομή ενός μεγάλου πελάτη με σκοπό το optimization και φυσικά τo performance.
Μέσα στο διάστημα αυτό έχουμε κάνει αρκετές αλλαγές που οδήγησαν τα πράγματα στο σωστό δρόμο. Μια όμως από αυτές τις αλλαγές ενώ αρχικά δούλευε όπως είχε σχεδιαστεί μετά από μερικές μέρες άρχισε να εμφανίζει σε τυχαία διαστήματα συμπτώματα deadlock.
Εννοείται ότι κάτι τέτοιο δεν το αφήνεις να περάσει χωρίς να το ερευνήσεις.
20 Sep 2016
SET vs SELECT when setting variables
Στην T-SQL υπάρχουν δύο τρόποι με τους οποίους μπορεί κανείς να θέσει μια μεταβλητή. Ο πρώτος είναι με το SET και ο δεύτερος είναι με την χρήση του select statement. Σε αυτό το post θα δούμε δύο σημαντικά σημεία στα οποία διαφοροποιούνται οι τρόποι αυτοί μεταξύ τους.
15 Dec 2015
Collations and string comparison in SQL Server
Σε αυτό το post θα ασχοληθούμε με το πώς μπορούμε να συγκρίνουμε στην T-SQL strings με διαφορετικό collation. Επίσης, θα δούμε πως μπορούμε να χρησιμοποιήσουμε την αλλαγή του collation για να κάνουμε case sensitive searches, στην περίπτωση που έχουμε case insensitive collation.
27 Aug 2021
The GOTO statement in SQL Server
Το να γράψω το συγκεκριμένο άρθρο ήταν μια προσωπική πρόκληση. Είμαι σίγουρος ότι θα υπάρξουν αντιδράσεις μιας και το GOTO statement έχει εξοβελιστεί στο πυρ το εξώτερον. Όμως δεν έχω καμία διάθεση ή πρόθεση να μπω σε αυτές.
13 Jan 2020
What you need to know when using MERGE statement
Στο SQL Server 2008 παρουσιάστηκε για πρώτη φορά το MERGE statement το οποίο απλοποιούσε τις διαδικασίες insert/update/delete ιδιαίτερα σε ETL διαδικασίες και από όσο έχω δει έχει αγαπηθεί από αρκετούς και μέσα σε αυτούς είμαι και εγώ.