Jump to content

antonch

Administrators
  • Posts

    1030
  • Joined

  • Last visited

  • Days Won

    7

Blog Entries posted by antonch

  1. antonch
    Στο SQL Saturday Night αυτό, θα δούμε τις δυνατότητες που μας έχουν έρθει για το Full Text Search στον SQL Server 2012, αλλά και όσα πρέπει να γνωρίζουμε για αυτούς είτε είμαστε DBA είτε DB Developers.
    Εγγραφή (είναι δωρεάν)
  2. antonch
    Από το Ιούνιο έχει ξεκινήσει να δίνει στο κοινό η Microsoft σε CTP έκδοση το SP1 για τον SQL Server 2012. Σήμερα έβγαλε την επόμενη έκδοση (CTP4).
    Πέρα όμως από τον αναμενόμενο σκοπό των SPs σε αυτό υπάρχει και μια ιδιαιτερότητα που σπάνια εμφανίζεται στον SQL Server. Με αυτό το SP1 – CTP4 έρχονται και Νέες δυνατότητες όπως
    περισσότερα
  3. antonch
    Σήμερα θα σας πω μια ιστορία που εξελίσσετε στη μαγική πόλη Σαλαμάνδρα. Στην μικρή αυτή πόλη υπάρχει μια επιχείρηση που έχει δύο servers εκ των οποίων ο ένας είναι και SQL Server. Στον SQL server τρέχουν διάφορα προγράμματα της εταιρείας Πέντε Κιλά Κώδικα (ανταγωνιστής της γνωστής ΤΚΚ) και ο χρήστης μπαίνει συχνά στον server μέσω remote desktop να κάνει διάφορες εργασίες. Επίσης ο τεχνικός του επιχειρηματία, ο Μπάμπης, έχει ανοίξει πρόσβαση μέσω remote desktop και στην ΠΚΚ στην default πόρτα, χωρίς κανέναν έλεγχο και με Administrator password «1» και έχει μόνιμα εγκατεστημένο TeamViewer.
    Όλα είναι καλά, τα πουλάκια κελαηδάνε στα κλαδιά και η ζωή στη μικρή Σαλαμάνδρα κυλάνε ήρεμα. Ώσπου μια μέρα ο χρήστης που μπαινοβγαίνει στον server προσπαθεί να κάνει login και βγάζει μήνυμα για λάθος κωδικό. Πόσο λάθος μπορεί να γράψει κανείς τον αριθμό 1; Παίρνει αμέσως τηλέφωνο την ΠΚΚ να απαιτήσει να μάθει αν έχουν κάνει κάτι μια και νωρίτερα την ίδια μέρα έκαναν κάποιες ρυθμίσει στον SQL. Κάπου στο τέταρτο τηλεφώνημα πείθεται τελικά ότι όχι, το να τρέχεις query στο Management Studio δεν αλλάζει με κάποιο μαγικό τρόπο τους κωδικούς του Administrator και καλό θα ήταν να τηλεφωνήσει άμεσα στον Μπάμπη.
    Δυστυχώς, ο Μπάμπης δεν είναι διαθέσιμος και έτσι έρχεται στη θέση του ο Μήτσος που βάζει ένα Hiren bootcd και κάνει reset το password του Administrator… σε… «1». Μετά από αυτό τηλεφωνεί στην ΠΚΚ και ρωτάει αν μπορούν να μπουν στον server τώρα και να δουν και τον SQL γιατί δεν φαίνεται να παίζει. Εξηγεί ότι ο ίδιος δεν είναι τεχνικός, είναι «sofwarάς» και δεν ξέρει να κάνει κάτι παραπάνω.
    Μπαίνει λοιπόν ένας από την ΠΚΚ στον server και βλέπει τα εξής:
    1. Έχουν σβηστεί όλα τα accounts (άλλο ένα είχε δηλαδή) πλην του Administrator
    2. Τα regional settings είναι στα Ρώσικα
    3. Το Desktop του server δεν έχει κανένα από τα shortcuts που είχε πριν, αλλά έχει κάποια άλλα νέα που παραπέμπουν σε προγράμματα που δεν υπήρχαν μέχρι εκείνο το πρωί. Π.χ. το Denwer, το Samarium κλπ
    4. Ο SQL και ο IIS δεν τρέχουν.
    Αφού ξεπερνάει το αρχικό σοκ του να προσπαθεί να καταλάβει τι ακριβώς βλέπει μπροστά του, προσπαθεί να επαναφέρει λίγο λίγο την κατάσταση. Κάνει reinstall τον IIS, επαναφέρει τα accounts και σηκώνει τον SQL Server και αρχίζει να ξηλώνει ότι πιάνει το μάτι του στα γρήγορα. Τουλάχιστον να μην είναι εντελώς ανοιχτός ο server. Κατεβάζει από το startup προγράμματα που ξεκινούσαν από hidden folders με διάφορα switches και κάνει uninstall ότι δεν έπρεπε να είναι εκεί. Αφού τελειώνει και τουλάχιστον ο server λειτουργεί ζητάει από τον χρήστη, να κάνει shutdown και να περιμένει τον Μπάμπη το πρωί να λύσει το πρόβλημα. Όλα αυτά με την λογική ότι ο τεχνικός της ΠΚΚ έκανε ένα γρήγορο και σχετικό επιφανειακό «καθάρισμα» και να μην είναι ο server προσβάσιμος στον φίλτατο Ρώσο το βράδυ.
    Ανατέλλει ο ήλιος, τα πουλάκια κελαηδάνε πάλι, οι μελισσούλες πάνε στα λουλουδάκια, το πρωί έρχεται και μαζί με το πρωί και ο Μπάμπης που κάνει τις εξής κινήσεις στον server:
    1. Κλείνει το remote desktop
    2. Αλλάζει το password του Administrator
    3. Αδειάζει τον κάδο ανακύκλωσης που ο τεχνικός της ΠΚΚ είχε βάλει όλα τα προγράμματα και αρχεία που έσβησε.
    4. Ενημερώνει την ΠΚΚ ότι πλέον θα μπαίνει μόνο μέσω TeamViewer
    Μόνο αυτά. Δεν έτρεξε antivirus, δεν έψαξε για Trojans, δεν κοίταξε αν υπάρχει κάτι άλλο στον server που μπορεί να ξέφυγε από το γρήγορο «καθάρισμα» που έγινε τη προηγούμενη. Δεν άλλαξε καν το password του TeamViewer που σίγουρα είχε δει ο Ρώσος μια και έτρεχε όταν μπήκε στον server και φαίνεται από το interface.
    Και έπειτα ο ήλιος έδυσε στη μικρή Σαλαμάνδρα και ξεκίνησε ένα χαρούμενο απόγευμα στη μαμά Ρωσία.
  4. antonch
    Είστε σίγουροι ότι έχετε πάρει έστω και μια φορά όλες τις databases σας backup;
    Ειδικά εσείς αγαπητοί συνάδελφοι που έχετε πολλές databases είστε σίγουροι;
    Η απάντηση στο ερώτημα αυτό είναι η παρακάτω stored procedure η οποία θα σας επιστρέψει αμέσως όλες τις database που έχετε ξεχάσει να πάρετε backup.
     
    create proc dbo.spUnbackupedDbs
    @backup_type char(1)='D',
    @time_span_days int=5
    as
    -- Created by Antonios Chatzipavlis
    --
    -- This stored procedure returns all databases in a server
    -- ( except model and tempdb ) at which I have not take any backup
    -- for a specific days from the current day
    --
    -- Parameters
    --
    -- @backup_type : defines the backup type
    -- VALID VALUES
    -- 'D' : Full Backup (DEFAULT VALUE)
    -- 'I' : Diffential
    -- 'L' : Transaction Log
    -- 'F' : File or Filegroup
    -- 'G' : File Diffential
    -- 'P' : Partial
    -- 'Q' : Partial Differential
    --
    -- @time_span_days : defines the amount of days ( DEFAULT VALUE is 5 DAYS )

    select
    a.[name] as database_name
    from master.dbo.sysdatabases a
    left join msdb.dbo.backupset b on a.[name] = b.database_name
    and
    datediff(day,b.backup_finish_date,getdate()) and
    b.type=@backup_type
    where a.[name] not in ('model','tempdb')
    and b.database_name is null
    go

    Δημιουργήστε πρώτα την stored procedure τρέχοντας το παραπάνω script και εφόσον όλα πάνε καλά εκτελέστε την όπως παρακάτω


     


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

    Φυσικά ο IIS της παραγωγής ήταν ο 7 στο οποίο έχουν γίνει θεαματικές αλλαγές. Έτσι όταν βάζεις ένα control σε μια web page to Visual Studio παει και βάζει μέσα στο web.config το παρακάτω entry
    system.web>
    httpHandlers>
    add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
    httpHandlers>
    system.web>

     


    Ο IIS 7 δεν μπορεί να το διαβάσει καθώς το httpHandlers section δεν είναι εκει πλέον αλλα στο . Δυστυχώς το VS 2008 πειράζει το web.config με την λογική του IIS 6.0.


    Θα πρέπει λοιπόν για να διορθωθεί το θέμα αυτό είτε από το management tool του IIS 7 να βάλει το http Handler είτε να αλλάξεις εσύ το web.config όπως παρακάτω


    system.webServer>
    handlers>
    add name="ReportViewerWebControl" path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    handlers>
    system.webServer>
  6. antonch
    Σαν παλαιός developer έχω νιώσει αρκετά καλά στο πετσί μου ότι ο όμορφα γραμμένος κώδικας όσο χάλια και αν είναι πάντα βοηθάει στην ανάγνωση του με αποτέλεσμα να εξυπηρετεί αρκετά τόσο στο debugging αυτού όσο και στο refactoring και extension.
    Αρκετές φορές ακόμα έχω δεχθεί ερώτηση για αυτό τόσο στον χώρο εργασίας μου όσο και κατά την διάρκεια των σεμιναρίων που κάνω. Αν και βαθιά πιστεύω ότι αυτό είναι κάτι το οποίο είναι θέμα που πρέπει να ορισθεί σε επίπεδο προσωπικό και ομάδας εργασίας εντούτοις υπάρχουν κάποιοι βασικοί κανόνες που θα μπορούσαμε να χρησιμοποιήσουμε καθώς είναι χρόνια δοκιμασμένοι και δεν χρειάζεται να ανακαλύψουμε ξανά τον τροχό από την αρχή. Φυσικά σε αυτούς μπορούμε να βάλουμε και τις προσωπικές μας πινελιές που μας εξυπηρετούν ή ταιριάζουν την ιδιοσυγκρασία μας.
    read more
  7. antonch
    Σήμερα ανακοινώθηκε η διάθεση του SP3 για τον SQL Server 2008. Αρκετές βελτιώσεις και διορθώσεις έχουν γίνει σε αυτό.Μπορείτε να το κατεβάζετε από τα παρακάτω links
     
    Download SQL Server 2008 SP3 Download SQL Server 2008 SP3 Express Download SQL Server 2008 SP3 Feature Packs Knowledge Base Article for Microsoft SQL Server 2008 SP3
  8. antonch
    Εισαγωγή

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

    Η ανάγκη

    Ας έρθουμε όμως στο ζουμί. Σαν DBA ή DB Dev καθημερινά γράφεις queries. Αρκετές φορές μέχρι κάποια πάνε σφαίρα κάποια πάνε αργά και γενικά είσαι μέσα σε μια ατέρμονη διαδικασία τα αργά να τα κάνεις να πάνε γρήγορα και τα γρήγορα γρηγορότερα.

    περισσότερα
  9. antonch
    Όταν βάζουμε το WITH ENCRYPTION option σε μια stored procedure, ένα trigger, μια function ή ένα view ξέρουμε ότι αυτόματα ο κώδικας δεν είναι ορατός. Θα μπορούσαμε να πούμε ότι είναι κλειδωμένος.

    Δεν ξέρω αν το γνωρίζεται αλλά ο SQL Server δεν είναι ένα digital rights management system αυτό σημαίνει ότι ο κώδικας που έχει γραφεί μέσα μια sp, function κλπ δεν είναι encrypted, αλλά απλά obfuscated.

    Το obfuscation αυτό ο SQL Server εδώ και πολλά χρόνια από τότε που εμφανίστηκε το with encryption option (ούτε καν θυμάμαι από πότε) το κάνει με το να εφαρμόσει bitwise OR στο κείμενο του κώδικα.

    Αυτό σημαίνει ότι όποιος χρήστης έχει δικαιώματα VIEW DEFINITION μπορεί να δει τον κώδικα μιας encrypted stored procedure κλπ, αρκεί να εκτελέσει μια άλλη sp που κάνει decrypt το περιεχόμενο της.

    Αν ψάξετε στο internet θα βρείτε πολλές. Απλά σας παραθέτω μία που τυχαία τσίμπησα από τα msdn forums και η οποία δουλεύει σε SQL Server 2008 R2, αλλά μόνο για stored procedures.



    ShowDecrypted Stored Procedure


    CREATE PROCEDURE dbo.ShowDecrypted(@ProcName SYSNAME = NULL)
    AS
    SET NOCOUNT ON
    IF EXISTS
    (
    SELECT * FROM sys.dm_exec_connections ec JOIN sys.endpoints e
    on (ec.[endpoint_id]=e.[endpoint_id])
    WHERE e.[name]='Dedicated Admin Connection'
    AND ec.[session_id] = @@SPID
    )
        BEGIN
     
        DECLARE @i BIGINT,@a NVARCHAR(MAX),@b NVARCHAR(MAX),@d NVARCHAR(MAX),@c NVARCHAR(MAX)
        SET @a=(SELECT [imageval] FROM [sys].[sysobjvalues] WHERE [objid] = OBJECT_ID(@ProcName) and [valclass] = 1 and [subobjid] = 1)
        SET @b='ALTER PROCEDURE '+ @ProcName +' WITH ENCRYPTION AS '+REPLICATE('-', 8000)
     
            BEGIN TRANSACTION
                EXECUTE (@b)
                SET @c=(SELECT [imageval] FROM [sys].[sysobjvalues] WHERE [objid] = OBJECT_ID(@ProcName) and [valclass] = 1 and [subobjid] = 1)    
            ROLLBACK TRANSACTION
     
        SET @d = REPLICATE(N'A', (DATALENGTH(@a) /2 ))
        SET @i=1
        WHILE @iDATALENGTH(@a)/2)
        BEGIN
        SET @d = STUFF(@d, @i, 1,NCHAR(UNICODE(SUBSTRING(@a, @i, 1)) ^(UNICODE(SUBSTRING('CREATE PROCEDURE '+ @ProcName +' WITH ENCRYPTION AS ' + REPLICATE('-', 8000), @i, 1)) ^UNICODE(SUBSTRING(@c, @i, 1)))))
        SET @i=@i+1
        END
     
        SELECT @d [storedProcedure]
     
        END
        ELSE
        BEGIN
            PRINT 'Use a DAC Connection'
        END
     
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO




     

    /*antonch*/
  10. antonch
    Δεν είναι λίγες η φορές που αναρωτιέσαι τι έχει εγκατασταθεί από τα components του SQL Server σε ένα σύστημα που έχεις. Επειδή αρκετές φορές η μνήμη δεν βοηθάει ή η εγκατάσταση αυτή δεν έχει γίνει από εμάς τους ίδιους πρέπει να ψάξουμε για να τα βρούμε. Τρόποι υπάρχουν πολλοί και φαντάζομαι γνωστοί.
    Υπάρχει όμως ένας που είναι αρκετά ευκολότερος και αποδοτικότερος.
    περισσότερα
  11. antonch
    Εγκαινιάζω ένα νέο tag στο blog μου με το όνομα Margaritaria. Εδώ θα σας γράφω τα ωραία που κατα καιρούς ακούω. Ελπίζω να σας αρέσει η περιόχη αυτή
    ΚΟΛΛΑΕΙ Ο SQL SERVER??
    ΛΥΣΗ
    ΤΟΝ ΒΓΑΖΟΥΜΕ ΑΠΟ ΤΟ DOMAIN ΠΟΥ ΕΤΣΙ ΚΑΙ ΑΛΛΙΩΣ ΚΑΚΟ ΕΙΝΑΙ ΓΙΑΤΙ ΡΙΧΝΕΙ ΤΟ PERFORMANCE
  12. antonch
    Διαβάζοντας το τελευταίο άρθρο του Jonathan Kehayias διαπίστωσα ότι έχω πολύ καιρό να γράψω κάτι για τα internals του SQL Server.
    Μέσα στο άρθρο αυτό του Jonathan υπάρχουν αναφορές σε κάποια ειδικά pages που υπάρχουν σε κάθε database στον SQL Server. Με αφορμή αυτό αποφάσισα να γράψω το post αυτό και να αναφερθώ σε όλα αυτά το special pages.
    Page structure and page offset
    Πριν ξεκινήσω όμως την αναφορά μου σε αυτά θα πρέπει να είμαι σίγουρος ότι όλοι γνωρίζουμε ότι κάθε data file σε μια SQL Server database δομείτε εσωτερικά σε pages των 8ΚΒ. Σε αυτά αποθηκεύονται τα δεδομένα του SQL Server. Ένα page έχει τον page header που είναι 96 bytes και το offset array το οποίο βρίσκεται στο τέλος του page, είναι 36 bytes και παρέχει τους δείκτες (pointers) στο byte location της αρχής της κάθε γραμμής (record) που είναι στην συγκεκριμένη σελίδα.

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

    Το υπόλοιπο τμήμα (8060 bytes) είναι ο χώρος στον οποίο αποθηκεύονται τα records. Αυτός είναι και ο λόγος που λέμε ότι το max record length δεν μπορεί να είναι πάνω από 8060 bytes καθώς ένα record δεν μπορεί να είναι σπασμένο σε δύο pages.
    Extents
    Κάθε 8 τέτοιες σελίδες φτιάχνουν ένα extent. Υπάρχουν δύο είδη extent
    read more
  13. antonch
    Η ώρα είναι 3:40 πμ (άγρια χαράματα δηλαδή) αλλά ύπνος δεν μου κολλάει. Ίσως φταίει ότι το μεσημέρι έφαγα μια κατσαρόλα λαγό στιφάδο (να είσαι καλά μάνα με την προσφορά σου αυτή) και κατανάλωσα και δύο μπύρες. Όπως είναι φυσικό μετά από τέτοιο τσιμπούσι ο ύπνος είναι απαραίτητος. Έτσι σαν καλό παιδί κοιμήθηκα και ξύπνησα στις 21:00 για να δω ποδόσφαιρο. Αφού τελείωσε λέω “δεν βάζω τον SQL Server 2008 στα Windows 2008 EE που έχω στήσει”. Ξεκίνησα την εγκατάσταση και όλα καλά. Βέβαια θα πρέπει να τονίσω ότι μου έβγαλε το warining για το Windows Firewall αλλά λέω ok θα το λύσω μετά γνωστό είναι…
    Στο ενδιάμεσω μίλαγα με φίλους στον messenger και όταν τελείωσε η εγκατάσταση λέω “αντε να βάλω και το SP1 μιας και χωρίς αυτό δεν θα παίζει τίποτα”.
    Όπως είναι φυσικό υπό την επήρεια του λαγού ξέχασα το windows firewall και η εγκατάσταση κολλούσε. Βρε καλέ μου, βρε γλυκό μου τίποτα. Αφού έκανα και την αντίστοιχη δέηση στην προστάτιδα των απανταχού κομπιουτεράδων την Αγία Θέκλα θυμήθηκα το Windows Firewall.
    Έτσι το έκλεισα προσωρινά και μετά έστησα το SP1 και όπως ήταν φυσικό είδα με χαρά το παρακάτω μήνυμα

    Καλημέρα σε όλους σας
  14. antonch
    Πολλές φορές χρειαζόμαστε σε strings να κάνουμε συγκρίσεις για το αν αυτά είναι όμοια ή πόσο κοντά είναι το ένα στο άλλο. Αυτό όπως καταλαβαίνει κανείς εγκυμονεί αρκετούς κινδύνους, παραδοχές και πολλά ακόμα που πρέπει να λάβουμε υπόψη, ειδικά αν δεν έχουμε βάλει αυστηρούς ελέγχους στο τι πληκτρολογεί ο χρήστης.
    Παρ’ ότι στον SQL Server έχουμε την SOUNDEX και την DIFFERENCE υπάρχουν περιπτώσεις που δεν μας είναι αρκετές για ικανοποιήσουμε τις ανάγκες μας.
    Για αυτές τις περιπτώσεις θα πρέπει να δράσουμε κάπως διαφορετικά και θα πρέπει να δημιουργήσουμε εμείς κάτι το οποίο να καλύπτει τις ανάγκες αυτές.
    περισσότερα
  15. antonch
    Στο SqlSchool.gr έχω φτιάξει μια λίστα από ενδιαφέροντα πιστεύω άρθρα τα οποία αξίζουν της προσοχή σας.
    Δείτε την λίστα αυτή
  16. antonch
    Ας συνεχίζουμε στο δεύτερο και τελευταίο μέρος τους SQLOS. To 1ο μέρος θα το βρείτε εδω.
    Memory Management
    Τα Windows στην x86 έκδοση τους δίνουν σε όλα τα processes 4GB Virtual Address Space (VAS), η οποία χωρίζεται σε δύο μέρη των 2GB το καθένα, το ένα είναι το user mode partition και το άλλο είναι το kerner mode partition όπως συνηθίζουμε να τα λέμε.
    Εάν ένα application χρειάζεται περισσότερο από τα 2GB του user mode partition στο VAS μπορώ να προσθέσω τον διακόπτη /3GB στο boot.ini αρχείο του λειτουργικού συστήματος. Αυτό σημαίνει ότι θα περιοριστεί το μέγεθος του kerner mode partition του VAS σε 1GB, και το user mode partition θα γίνει 3GB τα οποία θα είναι διαθέσιμα στο application.
    Στα Windows XP και στα Windows 2003 υπάρχει άκομα ένας διακόπτης ο /USERVA ο οποίος μπαίνει και αυτός στο boot.ini και ο οποίος δίνει καλύτερο έλεγχο μιας και μας επιστρέπει να ορίσουμε ακριβώς το μέγεθος που θα έχει user mode partition του VAS ή αν το πούμε αλλιώς το μέγεθος που θα χάσει το kerner mode partition του VAS
    Ακόμα και όταν τα 3GB μνήμης στο user mode partition δεν είναι αρκετά μπορώ, εάν φυσικά χρησιμοποίω επεξεργαστή που είναι Pentium Pro και πάνω, να προσθέσω τον διακόπτη /PAE στο boot.ini, και να εκμεταλευτώ το the Address Windowing Extensions (AWE) που παρέχουν τα Windows ώστε να φτάσω τα 64GB φυσικής μνήμης.
    Εδώ θα πρέπει αν επισημάνω ότι μειώνοντας το μέγεθος του kernel mode partition του VAS στο 1GB στην ουσία μειώνω το χώρο για τις εσωτερικές λειτουργίες και δομές του λειτουργικού.
    Ο SQL Server χωρίζει την δικιά του VAS σε δυο περιοχές

    Βuffer Pool
    H περιοχή αυτή είναι γνωστή και σαν BPoll, και είναι η βασική περιοχή αποθήκευσης στην μνήμη του SQL Server. Χρησιμοποιήτε για τα data & index pages και για όλες τις ανάγκες αποθήκευσης στην μνήμη που είναι μικρότερες των 8KB. Το μέγεθος της ορίζεται από τις τιμές που δίνω στα server configuration options max server memory και min server memory. Η BPoll ποτέ δεν ξεπερνάει τα όρια τα οποία έχουμε ορίζει με τα options τα οποία ανέφερα παραπάνω. Μέσα στην BPoll υπάρχουν γνωστά objects όπως buffer cache, procedure cach, system-level structures, locks, log caches, connection contexts.

    Reserved Address Space (RAS)
    Την περιοχή αυτή αρκετοί την λένε MemToLeave, άλλοι όπως και εγω την λέμε Reserved Address Space. Εμείς οι άλλοι πιστεύουμε ότι η ονομασία MemToLeave είναι παντελώς λάθος αλλά δεν θα ασχοληθώ εδώ με αυτό. Η περιοχή αυτή χρησιμοποιείτε για internal SQL Server allocations τα οποία περνούν τα 8ΚΒ συνεχούς χώρου, αλλά και για allocations που γίνονται από external consumers όπως extended stored procedures, OLE DB providers, in-process COM objects, SQLCLR assemblies κ.λ.π. Το μέγεθος της ορίζεται από την forumla
    RAS = 256 ΜΒ + ( max worker threads * 512 KB )
    Αν ανατρέξουμε στην εικόνα που έχω δώσει στο πρώτο μέρος του θέματος αυτού θα δούμε ότι στον SQL Server 2005 η αρχιτεκτονική του memory management αποτελείτε από αρκετά components όπως memory nodes, memory clerks, caches, pools, και memory objects.

    The memory node component
    Αυτό είναι υπεύθυνο για το μέρος που θα δεσμευθεί (locality of allocations). Αποτελείτε από τις εξής σελίδες:
    single-page allocator, multi-page allocator, large page allocator, reserved page allocator, virtual allocator, shared memory allocator. Memory clerks
    Αυτοί είναι το κλειδί στο granular memory management στον SQL Server 2005. Επιτρέπουν στον SQLOS να παρακολουθεί και να ελέγχει το μέγεθος της μνήμης που δεσμεύεται από το κάθε component.
    Η sys.dm_os_memory_clerks είναι αυτή η DMV την οποία μπορείτε να χρησιμοποιήσετε για να δείτε το memory distribution, όπως και την λίστα των ενεργών memory clerks καθώς επίσης και το μέγεθος των διαφορετικών ειδών μνήμης που έχουν δεσμευθεί από κάθε clerk.
    Για παράδειγμα το παρακάτω query δείχνει πως με την χρήση της sys.dm_os_memory_clerks DMV μπορείτε να δείτε τον κάθε τύπο του memory clerk μαζί με το σύνολο των reserved virtual memory, committed virtual memory, single και multi-pages που έχει δεσμεύσει ο καθένας
    SELECT [type],
    SUM(virtual_memory_reserved_kb) AS TotalVirtualMemoryReservedΚΒ,
    SUM(virtual_memory_committed_kb) AS TotalVirtualMemoryCommittedKB,
    SUM(multi_pages_kb) AS TotalMultiPagesKB,
    SUM(single_pages_kb) AS TotalSinglePagesKB
    FROM sys.dm_os_memory_clerks
    GROUP BY [type]
    ORDER BY TotalVirtualMemoryCommittedKB DESC,
    TotalVirtualMemoryReservedΚΒ DESC,
    TotalMultiPagesKB DESC,
    TotalSinglePagesKB DESC
    Επίσης μπορείτε να κάνετε χρήση της sys.dm_os_virtual_address_dump DMV για να δείτε λεπτομερείς πληροφορίες για την VAS.
  17. antonch
    Όπως εδώ και καιρό έχει γίνει γνωστό από την ανακοίνωση της Microsoft ο SQL Server 2012 θα είναι η τελευταία έκδοση που θα υποστηρίζει τον SQL Server Native Client OLE DB provider καθώς αυτός θα πρόκειται να σταματήσει να αναπτύσσεται.

    Ο αντικαταστάτης του θα είναι ένας παλιός γνώριμος το ODBC
    read more
  18. antonch
    Αρκετές φορές σαν DBA θέλουμε να έχουμε κάποια objects (tables, stored procedures) σε ένα σημείο από όπου να μπορούμε να τα καλούμε από οποιαδήποτε βάση μας χωρίς να χρειάζεται να αναφερόμαστε σε αυτά με qualified name (πχ db_name.schema_name.obj_name). Να είναι τρόπο τινά system object.
    περισσότερα
  19. antonch
    Επειδή δουλεύω συνεχεια με virtual μηχανές και επειδή πολλές φορές θέλω ένα αρχείο απο αυτές όταν είναι κλειστές .
    Εψαξα και βρήκα αυτό http://blogs.msdn.com/virtual_pc_guy/archive/2006/09/01/734435.aspx
    Αλλά και αυτό το οποίο έχει περισσότερες λεπτομέρειες
    http://www.petri.co.il/mounting-vhd-files-with-vhdmount.htm
    Αλλα και αυτό το οποίο έχει μια άλλη προσέγγιση
    http://blogs.technet.com/daven/archive/2006/12/15/vhdmount-without-virtual-server.aspx
  20. antonch
    Σήμερα λέω να κάνω κάτι που ίσως να σας αλλάξει πολλά στον τρόπο με τον οποίο αντιμετωπίζετε το transaction log.
    Είμαι σίγουρος ότι οι περισσότεροι έχετε το πρόβλημα το transaction log να μεγαλώνει ανεξέλεγκτα και να φωνάζετε βοήθεια.
    Να διαμαρτύρεστε που η Microsoft κατάργησε την TRUNCATE_ONLY.
    Αλλά είπα ήδη πολλά, δείτε το video και θα εξηγηθούν πολλά.

    Αυτά και ελπίζω να σας άρεσε.
    Υ.Γ Αυτό ήταν ένα video το οποίο πραγματικά γούσταρα που το έκανα για αυτό και τρόπος με τον οποίο μίλαγα, δεν έχει να κάνει με τίποτα άλλο.
  21. antonch
    Αρκετές φορές είναι απαραίτητο να καταγράφονται οι αλλαγές που γίνονται στις εγγραφές των πινάκων σε μια βάση. Μέχρι πριν τον SQL Server 2008 υπήρχαν οι παραδοσιακές μέθοδοι όπως πχ triggers. Τώρα όμως υπάρχουν και άλλοι τρόποι. Σε αυτή την παρουσίαση θα δούμε τους άλλους αυτούς τρόπους.
    Για να παρακολουθήσετε την παρουσίαση αυτή θα πρέπει να κάνετε εγγραφή πατώντας απλά στο παρακάτω image.

    Όσοι παρακολουθήσουν ζωντάνα την παρουσίαση αυτή θα συμμετάσχουν στην κλήρωση που θα γίνει για ένα (1) μήνα δωρεάν εκπαίδευση σε .NET από την pluralsight
  22. antonch
    Πριν από πολλά χρόνια ήταν 1989 ή 1990 χτυπάει το τηλέφωνο στην εταιρεία Χ και από την άλλη γραμμή του σύρματος ακούγεται μια φωνή "Ρε φιλαράκι τι τρώει ο κομπιούτορας;" Η απάντηση του τεχνικού που είχε όρεξη για πλακούλα ήταν "Ρεύμα" και εξαγριωμένος ο πελάτης απαντά "Μη μου κάνεις πλάκα του γράφω Mitsos και μου λεει φιλε νοτ φουντ (file not found)" Αξέχαστες εποχές DOS!
×
×
  • Create New...