Jump to content
  • entries
    292
  • comments
    368
  • views
    57194

About this blog

News about Microsoft SQL Server and other databases...

Entries in this blog

SQL Server Project "Crescent" Demo from WPC11

Ένα ενδιαφέρον video όπως παρουσιάστηκε στην WPC11 σχετικό με το “Crescent” το οποίο έχει σχεδιαστεί όπως λέει η Microsoft Project "Crescent" is designed with end users in mind to quickly, easily, and visually explore their data and answer ad-hoc questions in just a few clicks. Μπορείτε να το δείτε εδώ

antonch

antonch

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

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

antonch

antonch

Tip of the Day : sys.configurations

Αρκετές φορές θέλουμε να δούμε το πως είναι configure o SQL Server με μιά ματία. Αντί να “τρέχουμε” από εδώ και από εκεί μέσα στον SSMS υπάρχει λύση, και αυτή δεν είναι άλλη από το να ανοίξουμε ένα νέo query και σε αυτό να γράψουμε SELECT * FROM sys.configurations;   Το αποτέλεσμα θα σας ικανοποιήσει. Enjoy it @antonch

antonch

antonch

Export σε ISO 8859-7 μέσω SSIS

Σήμερα ένας αγαπητός φίλος και συνάδελφος μου έστειλε mail και με ρωτούσε Αντώνη καλησπέρα, Πως μπορώ να κάνω convert απο nvarchar se iso-8859-7 μέσω SSIS για να το κάνω export σε Flatfile? Η απάντηση είναι η εξής Tην στιγμή που ορίζω τον connection manager στο παραγόμενο flat file όριζω στο Code Page του αρχείου την τιμή 28597 (ISO 8859-7 Greek) Υπάρχει βέβαια η περίπτωση σε πεδία τα οποία είναι ntext ή nvarchar(max) να μου γκρινίαζει και να μου λέει ότι δεν μπορεί

antonch

antonch

DBCC IND

Αν και η συγκεκριμένη εντολή είναι ευρέως γνωστή και σίγουρα θα την έχετε βρει σε διάφορα sites εντούτοις θα γράψω και εγώ για αυτή καθώς θεωρώ ότι είναι μια σημαντική εντολή αν και είναι undocumented. Φυσικά μπορούμε με ασφάλεια να την χρησιμοποιήσουμε σε παραγωγικά συστήματα χωρίς φόβο και πάθος. Με αυτή μπορούμε να δούμε αναλυτικές πληροφορίες για τους indexes σε ένα συγκεκριμένο object ανά σελίδα. Η σύνταξη της εντολής είναι η παρακάτω DBCC IND ( {‘dbname’|dbid} , {‘objectname’

antonch

antonch

ΚΑΛΟ ΚΑΛΟΚΑΙΡΙ from SQL Saturday Nights

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

antonch

antonch

NEW SSIS Transformation Tool–SSIS Balanced Data Distributor

Το Microsoft® SSIS Balanced Data Distributor (BDD) είναι ένα νέο SSIS transform, το οποίο παίρνει ένα single input και το κάνει distribute τα rows σε ένα ή περισσότερα outputs uniformly μέσω  multithreading. Ένα ακόμα βέλος στην φαρέτρα μας για το SSIS. Μπορείτε να το κατεβάσετε από εδώ

antonch

antonch

Tip of the Day: AWE in 64 bit systems

Στον SQL Server υπάρχει το option AWE (μπορεί κανείς να το αλλάξει είτε με δεξί κλικ στον όνομα του server μέσα από το SSMS Properties\Memory είτε με την χρήση της sp_configure). Στην περίπτωση που είστε σε 64-bit system ακόμα και αν την ενεργοποιήσετε αυτή δεν λαβανετε υποψη, εκτός αν  δώσετε στο SQL Server service account το Lock Pages in Memory privilage και είστε σε Enterprise Edition. Στην αρχή ήταν μόνο για Enterprise Editon αλλά μετά από feedback Που δώθηκε στην Microsoft στον 200

antonch

antonch

Tip of the Day: Monitoring buffer cache size

Για να κάνω monitoring το μέγεθος της buffer cache αρκεί μέσα από το Performance Monitor Tool των Windows να ορίσω τους μετρητές: SQLServer: Memory Manager \ Total Server Memory (KB) Δείχνει το τρέχων μέγεθος της buffer cache. SQLServer: Memory Manager \ Target Server Memory (KB) Δείχνει το πάνω όριο της μνήμης που έχει εκείνη την στιγμή έχει ορίσει ο SQL Server ότι μπορεί να χρησιμοποιήσει για την buffer cache. Το νούμερο αυτό μπορεί να αλλάξει δυναμικά και αυτό γίνεται στις περιπτώσεις

antonch

antonch

Tip of the Day: What DBCC FREESYSTEMCACHE does?

Καθαρίζει όλα τα μη ενεργά/χρησιμοποιούμενα περιεχόμενα (cache entries) από όλες τις cache. Αν και ο SQL Server ενεργεί προκαταβολικά ώστε να γίνει αυτό, εντούτοις μπορώ χειροκίνητα να το κάνω αυτό εκτελώντας την DBCC FREESYSTEMCACHE ('ALL') Φυσικά το παραπάνω θα πρέπει να το κάνουμε μόνο εφόσον θέλουμε να καθαρίσουμε τα πάντα και φυσικά λαμβάνοντας υπόψη τα Remarks από τα BOL. Καλό είναι να εστιάζουμε την προσοχή μας σε συγκεκριμένο pool και να σβήνουμε αυτό εφόσον έχουμε δει ότι μας δημιο

antonch

antonch

Tip of the Day: What DBCC FREEPROCCACHE does?

Διαγράφει από την στοιχεία από την plan cache. Αυτό μπορεί να γίνει είτε για όλα τα στοιχεία, είτε για συγκεκριμένο plan, είτε για όλα όσα αφορούν συγκεκριμένο resource pool.   Πρέπει να την χρησιμοποιούμε με σύνεση καθώς μπορεί να σβήσουμε πχ το πλάνο μιας stored procedure κατά λάθος. Αυτό σημαίνει ότι την επόμενη φορά που αυτή θα ζητηθεί να εκτελεστεί αυτή θα περάσει όλα τα στάδια (Parse,Optimize....) ώστε να μπει το πλάνο της ξανά μέσα στην plan cache και να εκτελεστεί και φυσικά να επαχρησ

antonch

antonch

Poster for SQL Server Isolation Levels

Η λατρεία μου για τα poster είναι γνωστή. Ειδικά για αυτά που αφορούν τον SQL Server. Αν μάλιστα αυτά είναι χαριτωμένα, έξυπνα και λένε πολλά μου αρέσουν περισσότερο. Γενικά είμαι poster hunter. Χθες τυχαία ανακάλυψα αυτό που ακολουθεί το οποίο το έχει φτιάξει η Kendra Little (blog|twitter) το οποίο εξηγεί αρκετά όμορφα τα SQL Server Isolations Levels. Μπορείτε να το κατεβάσετε από το original link ή και από εδώ.

antonch

antonch

Tip of the Day: Πώς ορίζω το μέγεθος της Buffer Cache

Για να ορίσω το πόσο θα είναι ο χώρος που θα καταλαμβάνει η buffer cache αρκεί να ορίσω το Min και Μax Server Memory. Αυτά τα settings ορίζουν μόνο την buffer cache και όχι όλη την μνήμη που θα καταλαμβάνει ο SQL Server.

antonch

antonch

Tip of the Day #2: What DBCC DROPCLEANBUFFERS does?

Η DBCC DROPCLEANBUFFERS καθαρίζει την buffer cache μόνο από τις σελίδες που είναι χαρακτηρισμένες ως clean. Σε καμία περίπτωση δεν πειράζει όσες είναι dirty.

antonch

antonch

Tip of the Day: When Buffer Cache does clean?

Σε τακτά χρονικά διαστήματα ή σε περιπτώσεις που υπάρχει στέρηση σε μνήμη, ένα thread αναλαμβάνει να κάνει τον καθαρισμό της buffer cache από τις σελίδες που δεν έχουν πρόσφατα χρησιμοποιηθεί. Το thread αυτό ονομάζεται Lazywriter και ο τρόπος με τον οποίο αποφασίζει ποιες είναι αυτές που θα φύγουν από την buffer cache είναι και ονομάζεται Least Recently Used (LRU) policy. Least Recently Used policy Στο header της κάθε σελίδας όταν αυτή είναι στη μνήμη αποθηκεύονται πληροφορίες που κρατάνε

antonch

antonch

Tip of the Day#2: What CHECKPOINT operation does?

Η διαδικασία αυτή όταν  γίνεται μεταφέρει τις χαρακτηρισμένες ως dirty pages από την μνήμη (buffer cache) στο δίσκο (data file(s)) και αλλάζει στο header τους το status από dirty σε clean. Δεν αδείαζει-καθαρίζει την buffer cache από αυτές.

antonch

antonch

Tip of the Day: What is a Dirty Page?

Όταν μια σελίδα διαβάζεται από τον δίσκο και μπαίνει στην buffer cache θεωρείται ότι είναι μια Clean Page. Όταν όμως κάνω ένα transaction το οποίο την επηρεάζει (πάντα στην μνήμη) αυτή είναι μια Dirty Page (μπαίνει ένα mark στον header της) καθώς η εικόνα στην μνήμη είναι διαφορετική από αυτή στο δίσκο. Για να δω πόσες dirty pages έχω ανά βάση αρκεί να εκτελέσω το παρακάτω query που χρησιμοποιεί την sys.dm_os_buffer_descriptors SELECT db_name(database_id) AS 'Database',count(page_id) AS 'D

antonch

antonch

Tip of the Day: Page Life Expectancy Performance Counter

Όπως γνωρίζουμε ο SQL Server διαβάζει τις σελίδες από το δίσκο και τις βάζει στην buffer cache. To πόσο χρόνο (σε δευτερόλεπτα) αυτές μπορούν να μείνουν κατά μέσο όρο στην buffer cache χωρίς να ζητηθούν/χρησιμοποιηθούν μπορούμε να το δούμε από τον SQL Server\Buffer Manager\Page Life Expectancy performance counter. O μετρητής αυτός  σύμφωνα με τα recommendations πρέπει να είναι πάνω από 300 sec για να έχουμε ένα καλό PLE. Φυσικά σε σύστήματα που έχουν προβλήματα με την μνήμη αυτός θα είναι μικρότ

antonch

antonch

Tip of the Day: sys.dm_os_buffer_descriptors

Η DMV αυτή δείχνει μια γράμμη για κάθε data page η οποία είναι στην buffer cache. Με το παρακάτω script μπορείς να δεις το ποσό σε MB που έχει δεσμευτεί από τις σελίδες που υπάρχουν για κάθε βάση μέσα στην buffer cache SELECT CASE database_id WHEN 32767 THEN 'ResourceDB' ELSE DB_NAME(database_id) END AS 'Database', COUNT(*)*8/1024 AS 'Cached Size (MB)' FROM sys.dm_os_buffer_descriptors GROUP BY DB_NAME(database_id),database_id ORDER BY 2 DESC

antonch

antonch

Day Tip: PAGEIOLATCH

Το PAGEIOLATCH wait type δείχνει το χρόνο που χρειάστηκε για να διαβαστεί μια σελίδα από το δίσκο και να μπει στην μνήμη (buffer cache)

antonch

antonch

sp_help_revlogin. H stored procedure που μεταφέρει τα logins και τα passwords μεταξύ instances SQL Server 2005-2008-2008R2

Καιρό ήθελα να γράψω για αυτή και όλο το ξεχνούσα. Πρόσφατα σε μια εκπαίδευση αναφέρεθηκε το όνομα της και αφού το έβαλα σε χίλια δυο σημεία να το κάνω post και να μην το ξεχάσω τελικά τα κατάφερα και δεν την ξέχασα. Αρκετές φορές θέλουμε να μεταφέρουμε τα logins που έχουμε σε ένα SQL Server σε κάποιον άλλον. Ιδιαίτερα χρήσιμη όταν έχουμε database mirroring, replication κλπ. Υπάρχει ένα άρθρο το οποίο σου δίνει τον κώδικα αυτής και φυσικά αφού την δημιουργήσεις μπορείς να την εκτελέσεις και

antonch

antonch

Κάθε πότε γίνεται η διαδικασία CHECKPOINT? (UPDATED)

Όπως είναι γνωρίζουμε στον SQL Server υπάρχει μια διαδικασία η οποία σκοπό έχει να μεταφέρει από την Buffer Cache τις αλλαγμένες σελίδες στο δίσκο, γίνεται σε όλες τις βάσεις εκτός από την tempdb (αν και αυτό δεν είναι και τόσο αλήθεια αλλά δεν θα το αναλύσουμε εδώ). Σκοπός του είναι να είναι όσο το δυνατό πιο ενημερωμένα τα data files με τις αλλαγές είναι γραμμένες στο log. Αυτό μπορεί να γίνει είτε εκτελώντας την εντολή CHECKPOINT είτε το κάνει o SQL Server αυτόματα. Το αυτόματο μπορεί να ορ

antonch

antonch

Θα ήθελα την γνώμη σας

Καθώς έχουν ήδη γίνει δέκα SQL Saturday Nights θα ήθελα την γνώμη σας για την ποιότητα αυτών. Θα παρακαλούσα αν θέλετε να μου πείτε όσοι τα έχετε παρακολουθήσει είτε ζωντάνα είτε μαγνητοσκοπημένα την γνώμη σας για αυτά. Αυτό μπορείτε να το κάνετε μπαίνοντας στο www.sqlschool.gr και στη δημοσκόπηση που υπάρχει εκεί να επιλέξετε την άποψη σας. Σας ευχαριστώ εκ των προτέρων antonch

antonch

antonch

×
×
  • Create New...