Jump to content

antonch

Administrators
  • Posts

    1030
  • Joined

  • Last visited

  • Days Won

    7

Blog Entries posted by antonch

  1. antonch
    Αρκετοί με ρωτούν όταν μέσα στα μαθήματα που κάνω όταν λέω SQL Server τον προφέρω "sequel server", ενώ όταν αναφέρομαι στην γλώσσα Transact SQL λέω "transact ess kyoo ell".
    Θα σας δώσω λοιπόν την εξήγηση, την οποία εχω υιοθετήσει. Την έχω διαβάσει σε αρκετά sites και βιβλία, αλλά έχω ρωτήσει και αρκετά άτομα από το SQL Server Development Team της Microsoft στο τελευταίο μου ταξίδι στο Microsoft Campus στο Redmond πέρσι.
    Υπάρχουν δύο βασικοί λόγοι. Ο ένας είναι ιστορικός και ο άλλος γλωσσολογικός.
    Ο ιστορικός λόγος είναι γιατί το 1970 η IBM ανέπτυξε μια γλώσσα την οποία ονόμασε SEQUEL σαν απόρροια ακρωνυμίου από το Structured English QUEry Language. Η γλώσσα αυτή φτιάχτηκε για να κάνει maniplulate data τα οποία ήταν αποθηκευμένα στην database System R η οποία βάση, ήταν βασισμένη πάνω στο RDBMS μοντέλο του Dr. Edgar F. Codd (εαν βρείτε το βιβλίου του διαβάστε το αξίζει ).
    Το 1986 το ANSI υιοθέτησε σαν standard την γλώσσα αυτή και το 1987 την έκανε ISO κόβοντας ταυτόχρονα το όνομα σε SQL και δηλώνοντας και τον τρόπο προφοράς της σε "ess kyoo ell".
    Ο γλωσσολογικός λόγος είναι η απλότητα που δίνεται στην προφορά για όλους τους αγγλόφωνους.
    Τώρα γιατί έχει "καθιερωθεί" ο Microsoft SQL Server να προφέρετε Microsoft Sequel Server; Για να δείξουν ότι είναι RDBMS και όχι γλώσσα δεδομένων υιοθέτησαν την αρχική ονομασία.
    Και για να προλάβω μερικούς...
    Την ονομασία αυτή δεν την έδωσε η Microsoft αλλά οι εταιρίες που αρχικά έφτιαξαν τον SQL Server, για την ιστορία ήταν οι Sybase, Ashton Tale (dBase) και Microsoft, και αυτό έγινε το 1987 που ξέρουμε ποιός από τους τρεις ήταν ο ισχυρός.
  2. antonch
    Σήμερα βγήκε η παρακάτω ανακοίνωση
    Today, SQL Server 2008 R2 received an official release date. It will be listed on Microsoft’s May price list, and will be available by May 2010.
    SQL Server 2008 R2 showcases Microsoft’s continued commitment to business intelligence and mission-critical workloads. Since we made this release available as a Community Technology Preview (CTP) in August 2009, it has been well-received by the community with more than 150,000 downloads. Key customer benefits include:
    · A trusted and scalable platform with high availability, Master Data Services supporting data consistency across heterogeneous systems, StreamInsight enabling high-scale complex event processing, and support for high scale applications with up to 256 logical processors.
    · IT and developer efficiency through central management of multiple database applications, instances or servers, accelerating the development and deployment of applications and providing improved support for virtualization and Live Migration through Hyper-V™ in Windows Server 2008 R2.
    · Managed self-service business intelligence empowering a new class of business users to build and share powerful BI solutions with little to no IT support, while still enabling IT to monitor and manage end-user generated BI solutions with the new PowerPivot for Excel and PowerPivot for SharePoint
    “SQL Server 2008 R2 is freeing up our IT departments to focus on bigger challenges while keeping control of our most valuable asset, our information,” said Fabio Catassi, CTO Mediterranean Shipping Company. “Using Excel and PowerPivot as an interface for Self-Service BI, we are modeling, analyzing and pivoting millions of records in memory and publishing our BI solutions to SharePoint in few minutes. This also allows our geographically remote office branches to access them from a URL at a fraction of the time, and our IT department to centrally manage and monitor information.”
    Customers with Software Assurance can upgrade to SQL Server 2008 R2 and take advantage of the new features without incurring additional licensing costs.
    There’s still time to download, preview, and provide feedback!
    Go to http://www.microsoft.com/sqlserver/2008/en/us/R2Downloads.aspx to get more information and to download the November CTP of SQL Server 2008 R2. And let us know what you think: connect with the SQL Server 2008 R2 Development Team and provide feedback.
  3. antonch
    Επειδή στο προηγούμενο μου post είχα βάλει για την MySQL τα αντίστοιχα εργαλεία. Θα ήταν μεγάλη μου παράλειψη να μην βάλω και για την Oracle, μιας και στις μέρες μας υπάρχουν αρκετοί που φεύγουν από Oracle και πάνε σε SQL Server. Έτσι λοιπόν για όποιο θέλει να φέρει μια Oracle database σε SQL Server 2005 είτε 2008 μπορεί να καταβάσει τα αντίστοιχα migration tools από τα παρακάτω links
    SQL Server Migration Assistant 2008 for Oracle V4.0 SQL Server Migration Assistant 2005 for Oracle V4.0
  4. antonch
    Αφορμή για αυτό το post είναι ένα ερώτημα από ένα φίλο της κοινότητα μας (autoexec.gr). Είναι για τον SQL Server 2005 αλλά μπορείτε να το εφαρμόσετε και στις επόμενες εκδόσεις
    Για να εγκαταστήσουμε το database mail θα πρέπει να ακολουθήσουμε τα παρακάτω βήματα. Μια βασική προυπόθεση είναι να έχουμε ένα smtp server με ένα mail account.
    Ανοίγουμε το SSMS και πάμε

    δεξί κλικ Configure Database Mail

    όπου ο Database mail configuration wizard ξεκινάει
     



     
    Στο ερώτημα αυτό απαντάμε Yes στην ουσία ενεργοποιεί το database mail στον SQL Server. Aν πούμε όχι μετά τα πρέπει να πάμε στο Surface Area Configuration για να το ενεργοποίησουμε

    Δίνουμε ένα αναγνωριστικό στο Profile name και πατάμε Add

     
    Συμπληρώνουμε τα στοιχεία που ζητάει η συγκέκριμένη φόρμα με τα στοιχεία του mail account και του smtp server που αυτό υπάρχει, και πατάμε ΟΚ. Θα γυρίσουμε στην προηγούμενη φόρμα και η εικόνα μας θα είναι κάπως έτσι

    Πατάμε Next κάνουμε τα παρακάτω ανάλογα το πως θέλουμε να είναι το profile μας. Εγώ εδώ ορίζω και τα δύο.


    και πατάμε Next

     
     
     
    Πατάμε Next

    Πατάμε Finish

    Πατάμε Close

    και για να ελέγουμε ότι όλα είναι εντάξει επιλέγουμε Send Test E-Mail

    Αφού βεβαιώθουμε ότι όλα είναι ΟΚ πατάμε ΟΚ

    Έαν στον διάλογο που μας ρωτούσε για το αν θέλουμε να ενεργοποιήσουμε το database mail δεν είχαμε απαντήσει καταφατικά θα πρέπει να πάμε στα configuratio tools του SQL Server και να ανοίξουμε το SQL Server Surface Area Configuration Tool, επιλέγοντας το Surface Area Configuration for Features

    και έπειτα πάμε database mail και κάνουμε κλικ στο Enable Database Mail Stored procedured όπως στη παρακάτω εικόνα

    Εάν τώρα θέλουμε μέσα απο τον SQL Server να στέλνουμε mails τότε θα πρέπει αυτό να γίνει με την χρήση της stored procedure sp_send_dbmail. Ένα παράδειγμα έχω στην παρακάτω εικόνα το οποιο εκτελεί ένα query και στέλνει τα αποτελέσματα στους παραλήπτες που έχουμε ορίσει. Αυτοί μπορεί να είναι πολλοί απλά θα πρέπει στην αντίστοιχη παράμετρο να βάλω τα emails τους χωριζόμενα με semicolon (. Για περισσότερες πληροφορίες για την sp αυτή στα books online.
    Ανοίγουμε ένα νέο query window και εκτελούμε την stored procedure sp_send

     
     
     
     
     
     
     
     
     
    Το αποτέλεσμα θα είναι ο παραλήπτης να δει στο mail box του την παρακάτω εικόνα

  5. antonch
    Εγκαινιάζω ένα νέο tag στο blog μου με το όνομα Margaritaria. Εδώ θα σας γράφω τα ωραία που κατα καιρούς ακούω. Ελπίζω να σας αρέσει η περιόχη αυτή
    ΚΟΛΛΑΕΙ Ο SQL SERVER??
    ΛΥΣΗ
    ΤΟΝ ΒΓΑΖΟΥΜΕ ΑΠΟ ΤΟ DOMAIN ΠΟΥ ΕΤΣΙ ΚΑΙ ΑΛΛΙΩΣ ΚΑΚΟ ΕΙΝΑΙ ΓΙΑΤΙ ΡΙΧΝΕΙ ΤΟ PERFORMANCE
  6. antonch
    Πριν από πολλά χρόνια ήταν 1989 ή 1990 χτυπάει το τηλέφωνο στην εταιρεία Χ και από την άλλη γραμμή του σύρματος ακούγεται μια φωνή "Ρε φιλαράκι τι τρώει ο κομπιούτορας;" Η απάντηση του τεχνικού που είχε όρεξη για πλακούλα ήταν "Ρεύμα" και εξαγριωμένος ο πελάτης απαντά "Μη μου κάνεις πλάκα του γράφω Mitsos και μου λεει φιλε νοτ φουντ (file not found)" Αξέχαστες εποχές DOS!
  7. antonch
    Πριν μερικές μέρες μια ομάδα που είναι μέλη του Solid Quality Mentors οι 


    Ron Talmage,
    Aaron Johal,
    Allan Hirt,
    Herbert Albert,
    Antonio Soto,
    Greg Low,
    Dejan Sarka,
    Larry Barnes,
    Pablo Ahumada
    αρκετοί από αυτούς MVPs στον SQL Server έφτιαξαν ένα πόνημα 490 σελίδων!!! για το τι και πως θα κάνεις upgrade τον SQL Server σου σε SQL Server 2008 R2.

    Η θεματολογία του πονήματος αυτού είναι η παρακάτω


    Upgrade Planning and Deployment
    Management and Development Tools
    Relational Databases
    High Availability
    Database Security
    Full-Text Search
    Service Broker
    Transact-SQL Queries
    Notification Services
    SQL Server Express
    Analysis Services
    Data Mining
    Integration Services
    Reporting Services
    Other Microsoft Applications and Platforms
    Appendix 1: Version and Edition Upgrade Paths
    Appendix 2: Upgrade Planning Deployment and Tasks Checklist
    Αφιέρωσα αρκετό χρόνο για να το διαβάσω και πλέον το έχω κατατάξει στην συλλογή των πονημάτων που θεωρώ ευαγγέλια του SQL Server και δεν θα πρέπει να λείπει από κανένα DBA.

    Όποιος ενδιαφέρεται μπορεί να το κατεβάζει από εδώ.
  8. antonch
    Πρόσφατα έκανα μια παρουσίαση με το παραπάνω θέμα για το dotNetZone. Επειδή το θεωρω σημαντικό και επειδή τα παιδιά εκεί την έχουν μαγνητοσκοπήσει σας την δίνω και σε εσάς.
    https://www323.livemeeting.com/cc/usergroups/view?id=dnz34
    και η παρουσίαση μου είναι στο
    http://cid-4745d5449dec653a.skydrive.live.com/self.aspx/dnzPresentations/Why%20%5E0%20How%20to%20optimize%20SQL%20Server%20for%20performance%20from%20design%20to%20query.pdf
  9. antonch
    Οι περισσότεροι σχεδόν χρησιμοποιούν τα SSRS στην καθημερινότητα τους καλύπτοντας τις ανάγκες τους σε reporting. Πρόσφατα είχα μια ενδιαφέρουσα ερώτηση από έναν εκλεκτό φίλο και συνάδελφο σχετικά με αυτά, έτσι μου γεννήθηκε η ιδέα να γράψω το post αυτό.
    SSRS και IIS
    Ένα από τα πρώτα πράγματα που κάνει εντύπωση ειδικότερα σε όσους έχουν προγενέστερη εμπειρία από τον SSRS 2005 είναι το γεγονός ότι από την έκδοση των SSRS 2008 δεν υπάρχει η ανάγκη του IIS. Αν και αυτό μπορεί να είναι κάπως περίεργο, εντούτοις είναι μια σωστή απόφαση ώστε τα SSRS να απαγκιστρωθούν από τον IIS. O IIS είχε μεγάλη επίδραση στα SSRS ιδιαίτερα στην εγκατάσταση τους και αυτό διότι αρκετά IT περιβάλλοντα δεν θέλουν στην ίδια μηχανή να έχουν IIS και SQL Server. Επίσης θα πρέπει να τονισθεί ότι πράγματα όπως το web.config hierarchy μπορεί να έχει, άθελα του, επίδραση στα SSRS επειδή στις περισσότερες περιπτώσεις οι Web Server δεν είναι σωστά configured. Επίσης κατά την γνώμη αρκετών το να έχεις τα SSRS delivery components μέσα στον IIS δεν είναι ότι καλύτερο μιας και δεν σου δίνεται καλύτερο resource governance.
    Στις εκδόσεις μέχρι και τα SSRS 2005 ο IIS χρησιμοποιούταν σαν HTTP server για τα SSRS. Από τα SSRS 2008 και μετά αυτά χρησιμοποιούν απευθείας το HTTP.SYS από το λειτουργικό σύστημα. Έτσι το λειτουργικό πλέον κάνει την δουλειά και όχι ο IIS. Έτσι και αλλιώς θα πρέπει να γίνει κατανοητό ότι τα SSRS δεν είναι ένας γενικού σκοπού web server.
    Εξαιτίας ότι πλέον ο IIS είναι παρελθόν ο Report Server κάνει φυσικά μόνος του url registration και management τόσο για τον Report Manager όσο και για τον Report Server SOAP endpoints κάνοντας χρήση του HTTP.SYS
    Χρησιμοποιώντας το RS Configuration Tool έχουμε την δυνατότητα να settαρουμε αυτά τα URLs μαζί με τις πληροφορίες τους όπως πρωτόκολλο, path, port, virtual directory. Οι πληροφορίες αυτές αποθηκεύονται στο rsreportserver.config στο tag.
    Εδώ μου δίνεται η ευκαιρία να κάνω μια μικρή αλλά σημαντική παρατήρηση . Εξαιτίας ότι δεν υπάρχει εξάρτηση από τον IIS ο Report Manager καθώς και το Report Server web service έχουν ενσωματωθεί στο SQL Server Reporting Services Web Service.
    Συνεχίζοντας μετά την παρατήρηση μου θα πρέπει να αναφερθεί ότι τα ποιο common IIS settings τα οποία υπήρχαν στα SSRS 2005 υποστηρίζονται και στα SSRS 2008 και SSRS 2008 R2. Τέτοια είναι IP address, host headers, multiple ports, SSL certifications, IIS Security modes( NTLM, Kerberos, Negotiate, Basic, Custom). Δεν υποστηρίζονται anonymous, digest και passport authentication ή client certificates.
    Αρκετοί θεωρούν ότι η μεγαλύτερη απώλεια από την ανεξαρτητοποίηση των SSRS από τον IIS είναι τα ISAPI filters. Αν για παράδειγμα είχες single sign-on θα πρέπει να πας με τον ISA πλέον ή αν θέλεις κάποιο άλλο functionality εναλλακτική είναι να πας με ASP.NET HTTP custom modules.
    Φυσικά θα ήταν παράλειψη μου να μη τονίζω ότι μπορείς να έχεις εγκατεστημένο τον IIS και να στήσεις και τα SSRS στον ίδιο server. Αλλά θα πρέπει να γίνει κατανοητό ότι ακόμα και έτσι μιλάμε για δύο διαφορετικά services. Ακόμα και αν φτιάξει ένα virtual directory που έχει το ίδιο όνομα και port στον IIS αυτό δεν πρόκειται ποτέ να δεχθεί τα αιτήματα μιας και το HTTP.SYS πρώτο βλέπει τα αιτήματα αυτά και τα δρομολογεί στα SSRS.
    SSRS Windows Service και Memory Management
    Όλα πλέον στα SSRS είναι ενσωματωμένα σε ένα windows service το οποίο περιέχει τα Report Manager, Report Service Web Service, Scheduling service, Notification service, Event Service.
    Αυτό δεν είναι άλλο από το ReportingServicesService.exe. Το service αυτό κάνει host πολλαπλά application domains. Κάθε ένα από τα παραπάνω ενσωματωμένα services χρησιμοποιεί ξεχωριστό application domain. Αυτό μας δίνει την δυνατότητα να τα ενεργοποιούμε ή απενεργοποιούμε ξεχωριστά αν και υπάρχει εξαρτήσεις μεταξύ τους.
    Παρόλο που έχουμε ξεχωριστά application domains η διαχείριση της μνήμης είναι κοινή για κάθε service μέσα σε αυτό. Tα SSRS χρησιμοποιούν components από το SQL OS για να κάνουν διαχείριση μνήμης. Έτσι ενώ στις προηγούμενες εκδόσεις δεν μπορούσαμε να ελέγξουμε αυτή, εξαιτίας ότι όλα ήταν κάτω από την σκεπή του IIS, τώρα έχουμε την δυνατότητα να ελέγξουμε αυτή ορίζοντας τα πάνω και κάτω όρια αυτής. Επίσης υπάρχουν memory thresholds με αποτέλεσμα όταν ένας από αυτούς εμφανιστεί τα SSRS αλλάζουν συμπεριφορά ώστε να είναι πάντα διαθέσιμα στον τελικό χρήστη.
    Κάθε application domain το οποίο φιλοξενείται μέσα στο SSRS Windows Service όταν ξεκινάει παίρνει το ελάχιστο ποσό μνήμης που χρειάζεται για να ξεκινήσει. Από εκεί και μετά αρχίζει να αναφέρει το τι μνήμη χρησιμοποιεί και φυσικά ακούει τα notification που ο memory manager στέλνει σε αυτό και αφορούν το πόσο μνήμη χρησιμοποιεί και πόση θα πρέπει να απελευθερώσει. Όλα αυτά γίνονται με βάση έναν αλγόριθμο ο οποίος είναι βασισμένος στο χαμηλό κόστος και στο μεγαλύτερο memory consumption.
    Εάν δεν υπάρχει διαθέσιμη μνήμη τότε ο Report Server γυρίζει HTTP 503 error.
    Εάν θέλω να ορίσω το μέγεθος της μνήμης υπάρχουν διαθέσιμα τέσσερεις νέες επιλογές μέσα (ναι δεν είναι γραφικό) στο rsreportserver.config. Αυτές είναι:
    1. WorkingSetMinimum
    Ορίζουμε το ελάχιστο ποσό μνήμη που θέλουμε τα SSRS να χρησιμοποιούν
    2. WorkingSetMaximum
    Ορίζουμε το μέγιστο ποσό μνήμη που θέλουμε τα SSRS να χρησιμοποιούν
    3. MemorySafetyMargin
    Ορίζει το μέγιστο επιτρετό για το low-memory section
    4. MemoryThreshhold
    Ορίζει το μέγιστο επιτρεπτό για το medium-memory pressure section.
    Σε αυτό το σημείο θα πρέπει να σας εξηγήσω λίγο περισσότερο την διαχείριση της μνήμης ώστε να γίνουν κατανοητές οι επιλογές 3 και 4.
    Όταν έρχεται ένα αίτημα για μείωση της μνήμης που χρησιμοποιείται, ο server υπολογίζει το ελάχιστο μέγεθος της μνήμης που θα ελευθερωθεί και λαμβάνει από τα application domains πληροφορίες τέτοιες ώστε να μπορεί να ξέρει πόση μνήμη θα ελευθερώσει και πόσο εύκολα μπορεί να γίνει αυτό γιατί όπως έχω αναφέρει και ποιο πάνω ο αλγόριθμος αυτό κοιτάζει επειδή όταν προσπαθεί να μειώσει την μνήμη ο Report Server κάνει serialize κάποια state information στο δίσκο. Αυτό σημαίνει ότι θα πρέπει να γίνει παύση σε κάποια μεγάλα reports και αυτό το κάνει με το να κάνει serialize και να αφήσει τα μικρά. Έτσι έχουμε τρεις memory pressure καταστάσεις.
    1. Low
    Σε αυτή όλα τα request γίνονται processed και φυσικά νέα γίνονται αποδεκτά. Requests τα οποία απαιτούν background processing συνεχίζουν με χαμηλή προτεραιότητα.
    2. Medium
    Αυτά τα request που είναι σε εξέλιξη συνεχίζουν να εκτελούνται, ενώ τα νέα γίνονται αποδεκτά ανά περίπτωση. Το memory allocation σε όλα τα application domains αρχίζει να μειώνεται με μεγάλη μείωση στα background processing application domains (πχ Scheduling). Tα requests στο web service και στο URL access μπαίνουν στην υψηλή προτεραιότητα ώστε να μην υπάρχει επίπτωση στον τελικό χρήστη.
    3. High
    Δεν γίνονται αποδεκτά νέα request όπως επίσης requests για μνήμη απορρίπτονται. Σε αυτή την περίπτωση αρχίζει και το serialization στο δίσκο όπου φυσικά έχουμε σαν απόρροια να πέφτει η απόδοση των τρεχόντων request.
    Στην παρακάτω εικόνα συνοψίζονται όλα τα παραπάνω

  10. antonch
    Εισαγωγή
    Αρκετό καιρό έχω να γράψω ένα μεγάλο άρθρο, έτσι σήμερα μου ήρθε η όρεξη να το κάνω. Έσπαγα το κεφάλι μου να βρω ένα ωραίο θέμα ώστε να σας κεντρίσει το ενδιαφέρον. Αμέσως στο μυαλό μου ήρθε το θέμα που ο τίτλος περιγράφει.
    Γιατί όμως επέλεξα αυτό; Αφορμή για αυτό είναι κάποια γεγονότα και καταστάσεις που αντιμετώπισα τον τελευταίο διάστημα. Επίσης ένας ακόμα σημαντικός λόγος είναι ότι πλέον η εποχή του virtualization είναι πραγματικότητα και μάλιστα χωρίς να το καταλάβεις βρίσκεσαι με ένα μεγάλο αριθμό από τέτοιες μηχανές.
    Σαν σοβαροί επαγγελματίες που θέλουμε να εξοικονομήσουμε χρόνο συνήθως έχουμε προετοιμάσει κάποια base images των λειτουργικών που θέλουμε με εγκατεστημένα τα προϊόντα που εκ προοιμίου θέλουμε, και με την γνωστή διαδικασία (SysPrep) η δημιουργία μιας νέας virtual machine να είναι υπόθεση μερικών λεπτών.
    Σε αυτή την περίπτωση όμως αν είχαμε εγκαταστήσει SQL Server είχαμε να αντιμετωπίσουμε μερικά προβλήματα. Δεν ήταν άλυτα, δεν ήταν φοβέρα. Απλά σου χάλαγαν λίγο την διάθεση και την ευκολία, αλλά τελικά τι δουλεία σου την έκανες (με λίγο γκρίνια βέβαια).
    Όλα αυτά όμως ανήκουν στο παρελθόν. Στον SQL Server 2008 R2 μας δίνεται η δυνατότητα να εγκαταστήσουμε τον SQL Server στο base image μας χωρίς όμως να τον κάνουμε να λειτουργεί. Στην ουσία στήνονται όλα τα binaries, δεν γίνονται όμως configure θέματα που αφορούν computer, network, account-specific information.
    Αυτό μου δίνει τη δυνατότητα να μπορώ ευκολότερα να φτιάξω μια πλειάδα από μηχανές που περιέχουν ετοιμοπόλεμο SQL Server και μάλιστα με το ίδιο configuration!!!
    Τι μπορώ να έχω
    · Με την συγκεκριμένη διαδικασία μπορώ να έχω έτοιμα μόνο τα Database Engine Service & Reporting Services. Τα SQL Server Browser, SQL Server Writer & SQL Server Native Client γίνονται εγκατάσταση όταν τελικά ενεργοποιώ τον SQL Server
    · Μπορώ μετά την προετοιμασία να προσθέσω ή να αφαιρέσω features του SQL Server.
    · Μπορώ να έχω προετοιμάσει πολλά Instances του SQL Server.
    Τι δεν μπορώ
    · Δεν έχω την δυνατότητα να έχω "ετοιμα" SQL Server Analysis Services.
    · Δεν υποστηρίζεται SQL Server Cluster Installation.
    · Δεν υποστηρίζεται η εγκατάσταση των SQL Server Tools (SSMS κλπ)
    · Δεν υποστηρίζεται ΙΑ-64 εγκατάσταση.
    · Δεν μπορώ να κάνω προετοιμασία ένος SQL Server 2008 R2 Instance σε μηχανή που έχει ήδη προηγούμενες εκδόσεις του SQL Server.
    Η διαδικασία προετοιμασίας (Preparation)
    Ξεκινάμε το setup το SQL Server και επιλέγουμε Advanced > Image preparation of a stand-alone instance of SQL Server

    Ξεκινάει η διαδικασία εγκατάστασης όπως την έχουμε συνηθίσει

    Με την ολοκλήρωση της φάσης Setup Support Rules πατάμε OK

    Ακολουθεί η φάση Setup Support Files στην οποία πατάμε Install.

    Η διαδικασία ξεκινάει

    και με την ολοκλήρωση της

    ακολουθούν ο διάλογος με την License Terms όπου φυσικά και επιλέγουμε τα παρακάτω

    Ο επόμενος διάλογος μας δίνει τη δυνατότητα να επιλέξουμε τα features που θέλουμε να έχουμε διαθέσιμα όταν θα ενεργοποιήσουμε το instance μας. Φυσικά όπως είπα και παραπάνω διαθέσιμα δεν είναι όλα

    Αφού επιλέξουμε ο επόμενος διάλογος μας δίνει την δυνατότητα να ορίσουμε κάποιες βασικές πληροφορίες για το instance μας.

    Η βασικότερη είναι το Instance ID. Αυτό χρησιμοποιείται για να ξεχωρίζει τα installation directories και τα registry key του instance σας. Αυτό βέβαια δεν είναι δεσμευτικό όταν θα γίνει η ενεργοποίηση. Μπορείς πχ να ορίσεις σαν Instance ID κάτι και κατά την επόμενη φάση της ενεργοποίησης να δώσεις κάτι άλλο. Απλά το Instance ID θα παραμείνει το ίδιο ώστε να μην υπάρχει αλλαγή όσα παραπάνω ανάφερω.
    Ακολουθούν μερικοί διάλογοι που μας ενημερώνουν για την εξέλιξη της διαδικασίας μας στους οποίους απαντάμε τα βασικά


    Ώσπου φτάνουμε στο σημείο που είμαστε έτοιμοι για την δημιουργία του image. Στο οποίο βλέπουμε τι έχουμε επιλέξει και πατάμε Prepare

    Η διαδικασία ξεκινάει

    και με την ολοκλήρωση της φτάνουμε στον παρακάτω διάλογο

    πριν φύγετε από εδώ καλό είναι να κάνετε κλικ στο link που σας λέει, όπως επίσης και να πάτε στο directory που δείχνει το link αυτό μιας και σε αυτό θα βρείτε το ConfigurationFile.ini το οποίο και μπορείτε να χρησιμοποιήσετε σαν βάση για εγκατάσταση του SQL Server από configuration file
    Με την ολοκλήρωση της διαδικασίας αυτής έχουμε έτοιμο το instance του SQL Server.
    Μπορούμε να προχωρήσουμε στη διαδικασία του Windows SysPrep και να φτίαξουμε μια νέα μηχανή χρησιμοποιώντας το image αυτό το οποίο περιέχει το λειτουργικό μαζί με τον SQL Server.
    Η διαδικασία ενεργοποίησης (Completion)
    Όταν ανοίξουμε την νέα μηχανή και τελειώσουμε με τα του λειτουργικού πάμε στο Start menu και διαλέγουμε μια από τις παρακάτω επιλογές

    και πάμε

    ακολουθούμε τα βήματα


    ώσπου φτάνουμε στον παρακάτω διάλογο στον οποίο επιλέγουμε το προετοιμασμένο μας instance


    Στον παρακάτω διάλογο μπορείς να επιλέξει αν θα το ενεργοποιήσεις σαν default ή named instance

    Ακολουθούν μερικοί διάλογοι με τους οποίους ορίζεις τα παρακάτω





    και φτάνουμε στο σημείο στο οποίο έχουμε δώσει όλες τις απαραίτητες πληροφορίες ώστε να κάνουμε ενεργοποίηση του Instance μας


    Ακολουθούμε τις οδηγίες και τελικά φτάνουμε στο επιθυμητό μας αποτέλεσμα
  11. antonch
    Καιρό ήθελα να γράψω για αυτή και όλο το ξεχνούσα. Πρόσφατα σε μια εκπαίδευση αναφέρεθηκε το όνομα της και αφού το έβαλα σε χίλια δυο σημεία να το κάνω post και να μην το ξεχάσω τελικά τα κατάφερα και δεν την ξέχασα.
    Αρκετές φορές θέλουμε να μεταφέρουμε τα logins που έχουμε σε ένα SQL Server σε κάποιον άλλον. Ιδιαίτερα χρήσιμη όταν έχουμε database mirroring, replication κλπ.
    Υπάρχει ένα άρθρο το οποίο σου δίνει τον κώδικα αυτής και φυσικά αφού την δημιουργήσεις μπορείς να την εκτελέσεις και να πάρεις στο πιάτο τα logins σε μορφή script ώστε να μπορέσεις να τα δημιουργήσεις με κάποιες παραδοχές σε κάποιον άλλον SQL Server.
    Για καθαρά λόγους ευκολίας σε εσάς μεταφέρω το κώδικα εδώ
    USE master
    GO
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
    DROP PROCEDURE sp_hexadecimal
    GO
    CREATE PROCEDURE sp_hexadecimal
    @binvalue varbinary(256),
    @hexvalue varchar (514) OUTPUT
    AS
    DECLARE @charvalue varchar (514)
    DECLARE @i int
    DECLARE @length int
    DECLARE @hexstring char(16)
    SELECT @charvalue = '0x'
    SELECT @i = 1
    SELECT @length = DATALENGTH (@binvalue)
    SELECT @hexstring = '0123456789ABCDEF'
    WHILE (@i BEGIN
    DECLARE @tempint int
    DECLARE @firstint int
    DECLARE @secondint int
    SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
    SELECT @firstint = FLOOR(@tempint/16)
    SELECT @secondint = @tempint - (@firstint*16)
    SELECT @charvalue = @charvalue +
    SUBSTRING(@hexstring, @firstint+1, 1) +
    SUBSTRING(@hexstring, @secondint+1, 1)
    SELECT @i = @i + 1
    END

    SELECT @hexvalue = @charvalue
    GO

    IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
    DROP PROCEDURE sp_help_revlogin
    GO
    CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
    DECLARE @name sysname
    DECLARE @type varchar (1)
    DECLARE @hasaccess int
    DECLARE @denylogin int
    DECLARE @is_disabled int
    DECLARE @PWD_varbinary varbinary (256)
    DECLARE @PWD_string varchar (514)
    DECLARE @SID_varbinary varbinary (85)
    DECLARE @SID_string varchar (514)
    DECLARE @tmpstr varchar (1024)
    DECLARE @is_policy_checked varchar (3)
    DECLARE @is_expiration_checked varchar (3)

    DECLARE @defaultdb sysname

    IF (@login_name IS NULL)
    DECLARE login_curs CURSOR FOR

    SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
    sys.server_principals p LEFT JOIN sys.syslogins l
    ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name 'sa'
    ELSE
    DECLARE login_curs CURSOR FOR


    SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
    sys.server_principals p LEFT JOIN sys.syslogins l
    ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
    OPEN login_curs

    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
    IF (@@fetch_status = -1)
    BEGIN
    PRINT 'No login(s) found.'
    CLOSE login_curs
    DEALLOCATE login_curs
    RETURN -1
    END
    SET @tmpstr = '/* sp_help_revlogin script '
    PRINT @tmpstr
    SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
    PRINT @tmpstr
    PRINT ''
    WHILE (@@fetch_status -1)
    BEGIN
    IF (@@fetch_status -2)
    BEGIN
    PRINT ''
    SET @tmpstr = '-- Login: ' + @name
    PRINT @tmpstr
    IF (@type IN ( 'G', 'U'))
    BEGIN -- NT authenticated account/group

    SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ]'
    END
    ELSE BEGIN -- SQL Server authentication
    -- obtain password and sid
    SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )
    EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
    EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT

    -- obtain password policy state
    SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
    SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name

    SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ]'

    IF ( @is_policy_checked IS NOT NULL )
    BEGIN
    SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
    END
    IF ( @is_expiration_checked IS NOT NULL )
    BEGIN
    SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
    END
    END
    IF (@denylogin = 1)
    BEGIN -- login is denied access
    SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
    END
    ELSE IF (@hasaccess = 0)
    BEGIN -- login exists but does not have access
    SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
    END
    IF (@is_disabled = 1)
    BEGIN -- login is disabled
    SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
    END
    PRINT @tmpstr
    END

    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
    END
    CLOSE login_curs
    DEALLOCATE login_curs
    RETURN 0
    GO

    Το αποτέλεσμα της εκτέλεσης του παραπάνω κώδικα θα σας δημιουργήσει δύο stored procedures στην master τις sp_hexadecimal και sp_help_revlogin.


    Εκτελώντας την sp_help_revlogin θα έχετε ένα script με όλα τα logins του server που την τρέξατε.


    Λεπτομέρειες μπορείτε να διαβάσετε στο άρθρο.


    antonch
  12. antonch
    Πριν μερικές μέρες ανακοινώθηκαν από την Microsoft οι πρώτες αλλαγές που αφορούν τις εκδόσεις και τις άδειες χρήσης του προϊόντος.
    Οφείλω να ομολογήσω ότι ποτέ δεν ήμουν από αυτούς που ασχολούνταν με το θέμα των αδειών, θα μπορούσα να πω ότι ήμουν και είμαι αλλεργικός με το θέμα αυτό. Όμως είδα ότι κάτι πάει να αλλάξει στο θέμα αυτό και μάλιστα προς το καλύτερο.
    Επίσης επειδή είχα την τύχη να παρακολουθήσω ένα live meeting σχετικά με αυτά πήρα την απόφαση να προσθέσω και εγώ το λιθαράκι μου με το post αυτό. Είναι αλήθεια πάντως ότι μου πήρε μερικές μέρες για να καταλάβω πως έχει το θέμα με τις άδειες και είχα αρκετές ερωτήσεις.
    Αυτό πάντως που δεν μου ήταν δύσκολο να καταλάβω με την πρώτη ήταν το ποιες θα είναι οι εκδόσεις του SQL Server 2012.
    [read more]
  13. antonch
    Έχοντας πλέον επιστρέψει από ένα εξαιρετικό MVP Summit αυτό του 2012 θα ήθελα να μοιραστώ μαζί σας την εμπειρία μου αυτή.
    Ξεκινώντας την Καθαρά Δευτέρα για το ταξίδι αυτό και έχοντας τις εμπειρίες μου από το προηγούμενο summit που είχα παρακολουθήσει το 2010 γνώριζα καλά τι με περιμένει. Αλλά αυτό το summit ήταν πραγματικό εξαιρετικό ιδιαίτερα για τους MVPs του SQL Server. Ήταν πολύ παραπάνω από τις προσδοκίες μου και όχι μόνο τις δικιές μου αλλά όλων SQL Server MVPs. Ενδεικτικά θα πω ότι ίσως για πρώτη φορά σηκωθήκαμε όλοι μας όρθιοι και για αρκετά λεπτά χειροκροτήσουμε την ομάδα που είχε έρθει από το product group για να μας ενημερώσει. Δυστυχώς όμως όλα αυτά είναι κάτω από αυστηρό NDA και δεν μπορώ να μοιραστώ ακόμα τίποτα μαζί σας. Μόλις όμως αρθεί αυτό θα έχω να σας πω πολλά.
    Το ημερήσιο πρόγραμμα ήταν αρκετά γεμάτο εγερτήριο στις 6:00 πρωινό μέχρι τις 8:00 και από εκεί και μετά συνέχεια sessions μέχρι τις 19:00 (το δικό μου PG είχε πολλά περισσότερα να μας πει από κάποια άλλα που τελείωναν στις 17:00).
    Οι πρώτες δύο μέρες ήταν ε κ π λ η τ ι κ έ ς. Τα παλικάρια έχουν ζωγραφίσει. Αυτό και μόνο αυτό θα πω γιατί αν θα πω έστω και μια κουβέντα ακόμα κινδυνεύω να παραβιάσω το NDA.
    SQL Server 2012 και ξερό ψωμί και άσε τον Κλαδάκη να λέει ότι θέλει
    Οι επόμενες δύο μέρες είχαν αρκετά sessions όπου το PG ζητούσε την γνώμη μας. Στην ουσία είχαν ερωτηματολόγια που συμπληρώναμε για αυτά που μας ρωτούσαν (είπαμε υπάρχει NDA δεν μπορώ να σας πω) και αφού επιτόπου έβγαζαν το αποτέλεσμα ξεκινούσε μια ζωηρή συζήτηση μεταξύ μας. Το αποτέλεσμα και το feedback που ήταν αμφίδρομο ήταν κάτι παραπάνω από εξαιρετικό.
    Πέρα όμως από αυτά μου δόθηκε η ευκαιρία να μιλήσω με αρκετούς από το PG. Ιδιαίτερη μνεία θα κάνω στην συζήτηση που είχα κατά την διάρκεια του PG Dinner με το Eric Hanson Principal Program Manager Lead, Query Processing and Storage at Microsoft SQL Server. Είχαμε μια ενδιαφέρουσα συζήτηση για τους columnstore indexes, DW και άλλα όμορφα πράγματα.
    Εκτός όμως από τους ανθρώπους του PG είχα αρκετά ενδιαφέρουσες συζητήσεις και με άλλους MVP μια εμπειρία που σε κάνει να νιώθεις ότι κάτι σκαμπάζεις και εσύ καθώς δεν είσαι πλέον στην Ελλάδα που κάποιοι τα ξέρουν όλα και εσύ είσαι ένα απλό σκουπίδι ή ακόμα χειρότερα να λες κάτι και να προσπαθούν να σε υποβαθμίσουν γιατί λέει αυτά δεν ισχύουν στην Ελλάδα. Δυστυχώς ακόμα είμαστε στην εποχή των δεινοσαύρων και πρέπει να το αλλάξουμε γρήγορα αυτό. Εμένα πάντως αυτό μου έκανε αρκετά καλό καθώς είχα τη δυνατότητα να εμπιστευτώ ξανά τις δυνατότητες μου. Ναι το λέω με πίκρα αυτό…
    Με το φαγητό είχα ένα θέμα σε αυτό το summit καθώς είχε τα περισσότερα γεύματα με σολομό. Αν και μου αρέσουν τα ψάρια δεν είμαι ιδιαίτερα φίλος με το ψάρι αυτό. Αλλά και ο τρόπος που το μαγειρεύουν είναι κάπως πέρα από τα γούστα μου. Αλλά στην Αμερική δεν πρόκειται να πεινάσεις. Με το Hyper Vaggelis είχαμε μερικές αρκετές συνεδρίες με rib eye steaks, επισκέψεις στο Cheesecake Factory και άλλους όμοιους οργανισμούς λύτρωσης της πείνας.
    Στο πάρτι που έγινε την προτελευταία μέρα το κέφι ήταν κάτι άλλο. To karaoke που ακολούθησε όλα τα λεφτά. Ο χώρος που διοργανώθηκε ήταν το CenturyLink Field το γήπεδο στο οποίο παίζουν οι Seattle Seahawks. Ένα γήπεδο εξαιρετικής ομορφίας και λειτουργικότητας. Εμείς μόνο το ΟΑΚΑ και το Καραϊσκάκη
    To φαγητό και η μπύρα έρεαν εν αφθονία. Εκεί με τον Hyper Vaggelis και το Cloud boy περάσαμε απίστευτα. Ο Span δυστυχώς δεν μπορούσε να έρθει καθώς έπρεπε με το χάραμα να ταξιδέψει για NY.
    Έχοντας πλέον επιστρέψει πίσω κρατώ όλα αυτά για να αντλήσω δύναμη για την συνέχεια και ελπίζω να είμαι καλά και να μπορώ του χρόνου να ξαναπάω.
    /*antonch*/
  14. antonch
    Λοιπόν μιας και απέκτησα και εδω ένα blog είπα να κάνω σεφτέ με κάτι που λίγο ή πολύ όσοι ασχολούμαστε με SQL Server αντιμετωπίζουμε.
    Πως θα βρω τα queries που κάνουν υψηλή χρήση της CPU;
    H απάντηση στο ερώτημα αυτό είναι η παρακάτω custom stored procedure η οποία δουλεύει σε SQL Server 2005 & 2008
     
    create procedure spFindQueriesThatUseHighCPU
    as
    Set NOCOUNT ON
    SELECT TOP 100
    (a.total_worker_time/a.execution_count) as [Avg_CPU_Time], -- the time is in ms
    Convert(Varchar,Last_Execution_Time) as 'Last_execution_Time',
    Total_Physical_Reads,
    SUBSTRING(b.text,a.statement_start_offset/2,
    (case
    when a.statement_end_offset = -1 then len(convert(nvarchar(max), b.text)) * 2
    else
    a.statement_end_offset end - a.statement_start_offset)/2) as Query_Text,
    dbname=Upper(db_name(b.dbid)),
    b.objectid as 'Object_ID'
    FROM sys.dm_exec_query_stats a
    cross apply sys.dm_exec_sql_text(a.sql_handle) as b
    ORDER BY [Avg_CPU_Time] DESC
    go
  15. antonch
    Εδώ και καιρό ήθελα να ασχοληθώ και να γράψω ένα άρθρο με αυτό το θέμα.
    Ένα θέμα το οποίο προσωπικά θεωρώ ότι είναι από τα καλύτερα και δυνατότερα κομμάτια του SQL Server. Με το που το είδα στον SQL Server 2005 (εδώ εμφανίστηκε για πρώτη φορά) έκανα σαν μωρό παιδί που του πήρανε καινούργιο παιχνίδι. Και αυτό γιατί όπως οι περισσότεροι γνωρίζεται είμαι στην μεριά των developers. Από το παρελθόν (21 χρόνια είμαι επαγγελματικά στο χώρο της πληροφορικής) έχω ασχοληθεί με distributed applications, queuing system, asynchronous systems programming. Οι εμπειρίες μου σε μερικές περιπτώσεις είναι τραυματικές με τέτοια συστήματα όπως επίσης και οι χιλιάδες γραμμές κώδικα που έχω γράψει για να υλοποίησω τέτοιες λύσεις. Κυρίως θα ήθελα να τονίσω ότι για να υλοποιηθούν τέτοιες λύσεις θα πρέπει να κάνεις να δουλέψουν σωστά πολλά διαφορετικά εργαλεία και τεχνολογίες.
    Όταν πρωτοείδα τον Service Broker είπα μέσα μου εδώ έχει "ψωμί". Αυτό το "ψωμί" θα προσπαθήσω να το μοιραστώ μαζί σας σε περισσότερα από δύο posts (γιατί το θέμα είναι μεγάλο και δύσκολο).
    Ο Service Broker είναι μια message-queuing τεχνολογία που είναι ενσωματωμένη στον SQL Server, η οποία επιτρέπει στους developers να κάνουν πλήρως intergate τον SQL Server σε distributed applications, μιας και τους παρέχει ένα asynchronous σύστημα για database to database communication. Τι σημαίνει αυτό; ‘Οτι με την χρήση του μπορείς από μια database να στείλεις μηνύματα σε μια άλλη database χωρίς να χρειάζεται να περιμένεις για reponse, πράγμα που σημαίνει ότι οι εφαρμογές θα συνεχίσουν να δουλεύουν ακόμα και όταν η δεύτερη δεν είναι διαθέσιμη.
    Ο Service Broker σαν ένα καθαρόαιμο message-queuing σύστημα δουλεύει με το να στέλνει μηνυματα (messages) τα οποία περιέχουν δεδομένα σε ένα QUEUE. Τα messages παραμένουν αποθηκευμένα στο Queue μέχρι το σύστημα να έχει τα διαθέσιμα resources ώστε να τα επεξεργαστεί κάνοντας τις ενέργειες που το καθένα απαιτεί.
    Έτσι με το Service Broker μπορώ να έχω καλύτερο scalability και resource management καθώς επίσης έχω και τις εγγυήσεις ότι κανένα message που έχει σταλθεί δεν θα χαθεί όπως επίσης και ότι αυτά επεξεργασθούν ακριβώς με την σειρά που μπήκαν στο queue. O Service Broker εγγυάται 100% αξιοπιστία κάτι που δύσκολα, για να μην πω καθόλου, θα το συνατήσεται σε άλλα παρόμοια συστήματα.
    Στον SQL Server 2008 έγιναν μερικές σημαντικές αλλαγές κυρίως στην διαχείρiση μέσα απο Management Studio, τις οποίες θα δούμε αργότερα
    Μέχρι εδώ καταλάβατε τι είναι ο Service Broker;
    Πιθανές απαντήσεις
    Α. ΝΑΙ, προχωράμε λοιπόν παρακάτω
    Β. ΟΧΙ, ξαναδιαβάζουμε το άρθρο από την αρχή
    Είμαι σίγουρος ότι πολλοί αναρωτιέστε που μπορείτε να χρησιμοποιήσετε το Service Broker. Ας δώσω μερικά παραδείγματα.
    Παράδειγμα Α
    Ας υποθέσουμε ότι έχουμε μια εταιρία που έχει δύο sites ( Α και Β ) όπου στο κάθε ένα έχει από μια βάση σε SQL Server. Έστω ότι έχω ένα transaction (distributed) το οποίο ξεκινάει από μια διαδικασια στην database του Α site και το οποίο ενημερώνει την τοπική database αλλα και την database στο Β site.
    Στην περίπτωση που το Β site δεν είναι διαθέσιμο τι θα γίνει με το transaction αυτό;
    Σωστά σκεφτήκατε θα γίνει rollback.
    Όμως αν αντί να ενημερώνω το B (με την λογική του distibuted transaction) έστελνα ένα μήνυμα με την πληροφορία που θέλω να πάει στον Β Service Broker (κατά την διάρκεια του transaction στο A site ) τότε ακόμα και όταν το Β site δεν είναι διαθέσιμο το transaction το οποίο έχω ξεκινήσει στο A site θα είναι committed. Απλά το Β site θα μάθει τι θα κάνει όταν είναι ξανα στον αέρα και αφού διαβάσει τα μηνύματα που του έχουν έρθει. Εδώ θα πρέπει να επισημάνω ότι αν για οποιοδήποτε άλλο λόγο το transaction στο A site γίνει rollback και το μήνυμα το οποίο στάλθηκε στο B site θα γίνει και αυτό rollback. Μήπως θυμάται κανείς σας τι έπρεπε να κάνετε στο κοντινό παρελθόν με COM+ και Messege Queue Service;
    Παράδειγμα Β
    Ας υποθέσουμε ότι θέλουμε να εκτελέσουμε ένα περίπλοκο batch ή query μέσα από την εφαρμογή μας το οποίο είναι και χρονοβώρο. Θα ξεκινούσαμε την εκτέλεση και θα περιμέναμε μέχρι να τελειώσει. Φανταστήτε να γινόνταν η εκτέλεση αυτή μέσα από μια εφαρμογή. Ο χρήστης που την εκτελούσε δεν θα μπορούσε να κάνει τίποτα άλλο μέσα από την εφαρμογή μέχρι αυτή να τελειώσει. Και για να προλάβω κάποιους που θα μου πουν ότι θα το έβαζαν να τρέξει σε ξεχωριστό thread και όλα καλά, απλά να τους θυμίσω τις γραμμές κώδικα που έχουν γράψει για να το πετύχουν αυτό.
    Σε αυτή την περίπτωση θα μπορούσα να στείλω ένα μήνυμα στον Service Broker και αυτός να αναλάβει την εκτέλεση του κάποια στιγμή που δεν θα υπάρχει φόρτος εργασίας.
    Εννοείται βέβαια ότι δεν υπάρχει περίπτωση να χρησιμοποιήσουμε τον Service Broker όταν θέλουμε real time transactions ή θέλουμε να έχουμε άμεσες απαντήσεις. Επίσης εννοείται ότι δεν εκτελούμε SELECT σε μια remote database. Γενικά τον Service Broker τον χρησιμοποιούμε σε σενάρια όπως Asynchronous triggers, Bulk processing, Distributed order processing.
    Με την παραπάνω παράγραφο στο μυαλό μας ελπίζω να σας έδωσα την πραγματική και πρακτική αξία του Service Broker. Αν πραγματικά το βρήσκετε ενδιαφέρον και προκείτε να το αξιοποιήσετε προχωρήστε παρακάτω, αλλιώς ζητώ συγνώμη για τον μέχρι τώρα χρόνο σας. ( ει, δεν θα φύγει κανείς, έχει και συνέχεια!!!)
    Ποία όμως είναι η Αρχιτεκτονική του Service Broker;.
    Βασικά είναι μια ξεκάθαρη client/server αρχιτεκτονική.
    Ένα Service Broker application αποτελείται από ένα client service το οποίο ξεκινάει ένα διάλογο και ένα receiving service το οποίο δέχεται και επεξεργάζεται τα μηνύματα. Κάθε service αντιστοιχίζεται σε ένα queue. O συνδετικός κρίκος ανάμεσα στο service και στο queue είναι το contract το οποίο ορίζει το τύπο του μηνυματος (message) το οποίο στέλνεται από το service στο queue. H ανταλλαγή μηνυμάτων μεταξύ δύο services λέγεται conversation dialog.

    Τί είναι το Service;
    Το service είναι ένα endpoint για το διάλογο του Service Broker. Αυτό είτε μπορεί να είναι ένα service το οποίο ξεκινάει τον διάλογο αυτό (initiating-sending service) με την αποστολή του μηνύματος, είτε είναι ο αποδέκτης (target-receiving service), αυτό δηλαδή που λαμβάνει το μήνυμα από το queue. Κάθε service αντιστοιχίζεται σε ένα queue και σε ένα contract το οποίο ορίζει το τύπο του μηνύματος το οποίο στέλενται στο queue, διασφαλίζοντας το conversation contract.

    Τί είναι το Queue;
    Είναι με απλά λόγια ο κουβάς με τα μηνύματα (εντάξει δεν είναι χύμα στο κύμα αλλά επιτρέψετε μου για χάρη ευκολίας και αστείου να το λέω έτσι). Κάθε queue μπορεί να έχει αντιστιχοιθεί με πολλά services (διαφορετικά, μην ξεχνιώμαστε). Ακόμα κάθε queue μπορεί να συνδεθεί με μια stored procedure η οποία θα εκτελείται κάθε φορά που ένα νέο μήνυμα μπαίνει στον κουβά, δίνοντας μου την δυνατότητα να επεξεργάζομαι το μήνυμα άμεσα (θεικό ε;). Όμως μπορώ να έχω και διαφορετικούς τρόπους επεξεργασίας των μηνυμάτων όπως π.χ. χρησιμοποιόντας τον SQL Server Agent και τα jobs του. Επίσης κάθε queue μπορώ να το έχω active ή όχι χωρίς να πειράζω την όλη υλοποίηση μου (σαν να ήταν ένα service του λειτουργικού).
    Στο σημείο αυτό θα ήθελα να δώσω μερικές χρήσιμες, πιστεύω, παρατηρήσεις για το queue.
    · Εάν το sending και το receiving service είναι στο ίδιο SQL Server instance τότε μπορούν να μοιράζονται το ίδιο queue, αλλιώς διαφορετικά queues.
    · Εάν το receiving queue είναι σε άλλο SQL Server instance ή δεν είναι για κάποιο λόγο ενεργό (active), το μήνυμα θα πρέπει να μπαίνει στο transmission queue για της βάσης όπου το sending service ανήκει. Αυτό ισχύει και αντίστροφα. Χρησιμοποιόντας την view sys.transmission_queue μπορούμε να δούμε τα εκκρεμή μηνύματα.
    Τί είναι το Message;
    Κάθε μήνυμα είναι στην ουσία μια γραμμή στο queue. To format του ορίζεται από το τύπο του μηνύματος (message type) από το contract που υπάρχει ανάμεσα σε δύο services. Μπορεί να είναι empty, well-formed XML, XML το οποίο είναι valid ως προς κάποιο σχήμα ή να περιέχει binary data.

    Τί είναι το Dialog Conversation;
    Αντιπροσωπεύει την ανταλλαγή των μηνυμάτων μεταξύ δύο services. Τα μηνύματα μέσα σε ένα τέτοιο διάλογο μπαίνουν στο queue με την σειρά με την οποία στάλθηκαν. Ο διάλογος σταματάει όταν κάποια από τις εφαρμογές που συμμετέχουν σε αυτόν σταματήσει την συμμετοχής της είτε εκτελώντας την END CONVERSATION εντολή είτε υπάρχει error. Εάν δεν χρησιμοποιήσουμε την παραπάνω εντολή ο διάλογος παραμένει ανοικτός στην database που ανήκει. Με την sys.conversation_endpoints μπορώ να δω τους ενεργούς διαλόγους.
    Κάθε διάλογος διασφαλίζει τα παρακάτω:
    1. Guaranteed delivery
    Ο Service Broker είναι ένα reliable messaging system. Αυτό σημαίνει ότι ο αποστολέας του μηνύματος είναι σίγουρος ότι ο παραλήπτης θα πάρει το μήνυμα αυτό ακόμα και αν κατά την διάρκεια της αποστολής δεν είναι διαθέσιμος.
    2. Long-lived
    Τα dialogs συνήθως ζουν για μερικά δευτερόλεπτα, αλλα μπορούν να ζήσουν και χρόνια ολοκλήρα εφόσον έχω long-running business processes.
    3. Exactly once (αυτό μου αρέσει πολύ)
    Η αποστολή του μηνύματος μέσα από τον διάλογο στον Service Broker μου εγγυάται την μοναδικότητα του μηνύματος. Δηλαδή, ακόμα και αν το initiator service πρέπει να ξαναστείλει το ίδιο μήνυμα επειδή κάτι πήγε στραβά, τότε και τα δυο θα πάνε στον παραλήπτη αλλά μόνο το ένα από τα δυο θα γίνει processes. To άλλο αυτόματα θα διαγραφεί. ( ρε παιδία δεν καιρός να δούμε τον exchange server σε SQL Server database;)
    4. In-order delivery
    Διασφαλίζει ότι τα μηνύματα θα παραληφθούν με την ίδια σειρά που εστάλησαν.
    5. Persistence
    Ένας Service Broker dialog επιβιώνει μετά από restart του database server, επειδή τα messages και οι dialogs είναι persisted απευθείας στην database. Αυτό σημαίνει ότι ακόμα όλα τα l open dialogs αλλά και τα unprocessed messages είναι persisted αυτόματα και γίνονται ξανά διάθεσιμα όταν ξεκινήσει ξανά το database engine service!!!.

    Τί είναι τα Conversation Groups;
    Κάθε conversation group εμπεριέχει έναν ή περισσότερους διαλόγους και επιτρέπει στον Service Broker εύκολα να βρήσκει τα conversations που εμπλέκονται σε μια συγκεκριμένη εργασία. Η σημασία τους είναι τεράστια και αυτό διότι εαν πχ μια εφαρμογή στέλνει ή παίρνει ένα μηνυμα ο SQL Server κλειδώνει το group στο οποίο το μήνυμα ανήκει με σκοπό να παραγματώσει αυτό που είπαμε παραπάνω το EOIO delivery (exactly once in order).

    Τί είναι το Contract;
    To contract ορίζει τον τύπο του μηνύματος που το service χρησιμοποίει για να πραγματώσει την διαδικασία. Είναι η συμφωνία μεταξύ δύο services για το τι το κάθε ένα παίρνει και στέλνει στην επικοινωνία μετάξυ τους . Επίσης διασφαλίζει ότι μόνο οι τύποι των μηνυμάτων που έχουν ορισθεί στο contract θα γίνουν processes.

     
    Τί είναι το Service Broker Endpoint;
    Εάν δύο services σε ένα conversation είναι σε διαφορετικά instances του SQL Server χρειάζεται να δημιουργήσουμε ένα Service Broker endpoint το οποίο θα δέχεται τα incoming and outgoing TCP/IP connections σε συγκεκριμένη πόρτα. 'Ενα SQL Server instance μπορεί να έχει ένα και μόνο ένα Service Broker endpoint το οποίο γίνεται shared σε όλα τα services στο instance αυτό.
    Τί είναι τα Remote Service Bindings;
    Τα Remote Service Bindings χρησιμοποιούνται για να ορίσουμε το security context με το οποίο το initiating service συνδέεται στο remote service το οποίο είναι σε διαφορετικό instance του SQL Server. Τα Remote Service Binding χρησιμοποιούν certificate το οποίο δένεται με συγκεκριμένο database user account για να συνδεθούμε στο remote instance.
    Τί είναι τα Routes;
    Ο Service Broker χρησιμοποιεί τα routes για να εντοπίσει το service με το οποίο θα στείλει το μήνυμα. Εάν δεν υπάρχει κάποιο route το οποίο να είναι συνδεδεμένο με το το service τοτε by default ο Service Broker θα κάνει παράδοση του μηνύματος στο τρέχων instance. Ένα route περιέχει το όνομα του service με το οποίο γίνεται η σύνδεση, το ID του Service Broker instance το οποίο κάνει host το service, και το network address του remote Service Broker endpoint.
    Εδώ λέω να σταματήσω το πρώτο μέρος. Ελπίζω το θέμα αυτό να σας αρέσει. Περιμένω τα σχόλια σας για αυτό.
  16. antonch
    Επειδή ο φίλος Αθανάσιος το ζήτησε για να μην του χαλάσουμε το χατήρι.

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





    declare @weekday char(3)
    declare @command varchar(2048)
    select @weekday=upper(left(datename(dw,getdate()),3))
    set @command = 'backup database $(dbname) to disk =''$(backupPath)\$(backupFileName)_'+@weekday+'.bak' + ''' with init'
    exec (@command)
    και μετά με το sqlcmd εργαλείο του SQL Server από command line γράφουμε το εξής

    C:>sqlcmd –E –i backup.sql –v dbname=”” backupPath=”” backupFileName=””
  17. antonch
    Αρκετές φορές μέσα από τα μαθήματα που κάνω για τον SQL Server όταν αναφέρω ότι το datetime έχει σαν βάση την 1/1/1753 οι μαθητές μου με ρωτάνε το λόγο.
    Ο λόγος είναι ο εξής όπως τον εξηγεί όμορφα ο Tibor Karaszi

    There are historical reasons for this limitation. In what we sometimes refer to as the "Western world," there have been two calendars in modern times: the Julian and Gregorian calendars. These calendars were a number of days apart (depending on which century you looked at), so when a culture that used the Julian calendar moved to the Gregorian calendar, it removed from 10 to 13 days. Great Britain made this shift in 1752. (So, in that year, September 2, 1752 was followed by September 14, 1752.)
    An educated guess as to why Sybase SQL Server—the predecessor of Microsoft SQL Server—selected 1753 as the earliest date is that if you were to store a date earlier than 1753, you would also have to know which country was using which calendar and also handle this 10- to 13-day jump. So Sybase decided to not allow dates earlier than 1753. Note, too, that other countries made the shift later than 1752. Turkey, for instance, did it in 1927.
    Being Swedish, I find it amusing that Sweden had the weirdest implementation. Sweden originally planned to skip every February 29, leap day, over a period of 40 years (from 1700 to 1740) so that Sweden would be in sync with the Gregorian calendar after 1740 (but meanwhile not in sync with anyone else). However, in 1704 and 1708 the leap day wasn't skipped for some reason, so in 1712 (which was a leap year), Sweden inserted yet one more extra day (imagine being born in Feb 30!) and then made the shift over a day, in 1753, in a similar manner to everyone else.
    By Tibor Karaszi, SQL Server MVP

  18. antonch
    Σήμερα αντιμετώπισα ένα μήνυμα λάθους που δεν το είχα ξαναδεί μέχρι τώρα

    Ο φίλος Νίκος Κοασίδης από την Θεσσαλονίκη προσπαθούσε να στήσει την Express έκδοση του SQL Server 2005 σε windows xp ελληνικά με sp3. Βέβαια αυτό μπορεί να συμβεί και στις άλλες εκδόσεις.

    Με το που ξεκινούσε την εγκατάσταση εμφάνιζε το μήνυμα λάθους


    “SQL Server Setup unexpectedly failed. For more information, review the Setup summary log file..."


    Μετά από μια σύντομη αναζήτηση βρήκα το εξής που λύνει το πρόβλημα αυτό.

    Πάμε στην registry και κοιτάμε δύο hives τα

    HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

    και

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

    Μέσα σε αυτές πρέπει να υπάρχει το entry “ΑppData”  με value “%USERPROFILE%\Application Data”.

    Έαν δεν υπάρχει το δημιουργούμε (String). Στον Νίκο έλειπε από το HKEY_CURRENT_USER\… .

    Τρέχουμε ξανά το setup και βγάζει ένα μήνυμα για το MSXML αλλα λέμε ΟΚ και όλα πάνε καλά
  19. antonch
    Τις τελευταίες μέρες κάνω διάφορα πειράματα και δοκιμές στον SQL Server 2008 πάνω σε Windows Server 2008 R2.
    Έτσι έφτιαξα μια μηχανή στην οποία ήθελα να έχω περισσότερα από ένα instances του SQL Server 2008.
    Έστησα το πρώτο έκανα και τα απαραίτητα updates & restarts και πήγα να στήσω το δεύτερο. Με το που ξεκίνησε μου βγάζει το μήνυμα

    “Invoke or BeginInvoke cannot be called on a control until the window handle has been created.”

    ‘Επειτα από μια έρευνα που έκανα βρήκα ότι αυτό γίνεται εξαιτίας της αλλαγής συμπεριφοράς που έχει το .NET Framework τόσο στον Windows Server 2008 R2, όσο και στα Windows 7, που αφορά το πως γίνεται handle τα UI dialogs με αποτέλεσμα σε κάποιες περιπτώσεις να βγάζει το μήνημα αυτό. Μάλλον είναι bug αλλά για να είμαι σίγουρος θα περιμένω την επιβεβαιώση. Από ότι φαίνεται αυτό θα το συναντήσουμε και στην R2 έκδοση του SQL Server 2008.
    Το καλό βέβαια είναι ότι δεν δημιουργεί ιδιαίτερο πρόβλημα μιας και αν αμέσως ξαναξεκινήσεις το setup αυτό θα προχωρήσει κανονικά.
    Φιλικά
    Αντώνης
  20. antonch
    Με αυτό το post μου σε καμία περίπτωση δεν θέλω να εγείρω ατέρμονες συζητήσεις και διαμάχες απλά να καταγράψω και να σχολιάσω θέλω μια είδηση που βρήκα τυχαία εδώ και αναφέρει ότι η ORACLE έκανε αύξηση στη τιμή της 11g κατά 40%! μέσα σε αυτή την δύσκολη οικονομική συγκύρια.
    Από την άλλη η "επάρατη" Microsoft συνεχίζει να πουλάει με την ίδια τιμή τον SQL Server 2008 και μην μου πείτε ότι είναι καλύτερη η ORACLE 11g από τον SQL Server 2008 γιατί ξέρουμε όλοι ότι κάτι τέτοιο δεν ισχύει.
    Για όσους πάντως θέλουν να δουν τι θα πληρώσουν αν αγοράσουν SQL Server 2008 εδώ θα βρείτε ένα calculator που υπάρχει στον site του SQL Server.
    Εγώ δεν έχω να προσθέσω τίποτα άλλο, τα σχόλια και οι επιλογές είναι δικά σας πλέον.
  21. antonch
    Μέσα σε έναν οργανισμό θα συναντήσουμε πολλές batabase οι οποίες περιέχουν business-critical data. Πάνω από αυτές θα βρούμε applications τα οποία διαχειρίζονται τα δεδομένα αυτά. Καθώς ο όγκος των δεδομένων γεωμετρικά αυξάνετε, αλλά και ο αριθμός των χρηστών που ζητούν πρόσβαση σε αυτά μεγαλώνει, είναι κατανοητό σε όλους ότι η διαθεσιμότητα των δεδομένων πρέπει να είναι αδιάλειπτη, όπως επίσης και η ταχύτητα απόκρισης στα ερώτημα και στα transactions των χρηστών πρέπει να είναι μεγάλη και σταθερή. Ο SQL Server 2008 παρουσίασε μια σειρά από εργαλεία τα οποία σκοπό έχουν να βοηθήσουν τον DBA στο να παρέχει τα παραπάνω. Ένα από αυτά τα εργαλεία είναι και ο RESOURCE GOVERNOR με τον οποίο θα ασχοληθώ σε αυτό το post μου.
    Το πρόβλημα
    Στις προηγούμενες εκδόσεις του SQL Server όταν ήμασταν σε ώρες αιχμής κάποιες βασικές εφαρμογές βλέπαμε να υποφέρουν κυριολεκτικά σε performance και αυτό διότι υπήρχαν άλλες λιγότερο βασικές εφαρμογές που έτρεχαν παράλληλα εκτελούσαν "βαριές εργασίες". Όμως ακόμα και στην περίπτωση που έχουμε μια βασική εφαρμογή αλλά μεγάλο αριθμό χρηστών, που ο καθένας όμως κάνει εργασία με διαφορετικό βάρος στην παραγωγική διαδικασία της ημέρας, πόσες φορές έχουμε έρθει αντιμέτωποι με προβλήματα όπως η τιμολόγηση ή το λογιστήριο ή ακόμα χειρότερα το αφεντικό να "σέρνονται"; Η αιτία για όλα αυτά είναι ότι όλες οι εφαρμογές και όλοι οι χρήστες έπαιρναν στο μέτρο του δυνατού ισόποσα ποσοστά χρήσης τόσο της μνήμης όσο και της CPU.
    Την λύση στα παραπάνω ήρθε να δώσει ο Resource Governor.
    Τί είναι ο Resource Governor?
    Ταξινομεί τα εισερχόμενα connections και τα βάζει το καθένα σε προκαθαρισμένο workload group. Ομαδοποιεί τα resources σε resource pools, που το κάθε ένα ορίζει όρια όσον αφορά την χρήση της CPU και της μνήμης. Συνδέει τα workload groups σε resource pools. Παρακολουθεί τα resources χρησιμοποιώντας το workload group. Ορίζει την προτεραιότητα μεταξύ των workload groups. Τι είναι τα Resource Pools?
    Ένα recourse pool συσχετίζεται με τους φυσικούς πόρους που ο server μας έχει. Με την ολοκλήρωση της εγκατάστασης του SQL Server 2008 έχω εκ προοιμίου δύο resource pools, τα default (χρησιμοποιείται για όλα τα groups που δεν τους έχω ορίσει pool) και internal (είναι για τις εσωτερικές εργασίες του SQL Server). Μπορώ να φτιάξω και τα δικά μου και κάθε resource pool μπορώ να ορίσω (δεν μπορώ να το κάνω στα default και Internal) τα εξής:
    Minimum CPU percentage (0->100) Maximum CPU percentage (100->0) Minimum memory percentage (0->100) Maximum memory percentage (100->0) Τι είναι τα Workload Groups?
    Είναι ο container για τα session requests τα οποία τα ίδια κριτήρια ταξινόμησης. Με την ολοκλήρωση της εγκατάστασης του SQL Server 2008 έχω εκ προοιμίου δύο workload groups τα default και internal, τα οποία εξ' ορισμού ανήκουν στα default & internal resource pools. Εδώ θα πρέπει να επισημάνω ότι και αυτά που θα φτιάξω εγώ μπορούν να ανήκουν σε ένα και μόνο ένα resource pool. Σε κάθε workload group μπορώ να ορίσω τα εξής:
    Assign a Priority Ορίζω το priority (Low, Medium, High).
    Limit Maximum Requests Ορίζω τον αριθμό των ταυτόχρονων requests τα οποία επιτρέπονται να εκτελεστούν στο συγκεκριμένο workload group.
    Limit CPU Time (Sec) Ορίζω το maximum χρόνο της CPU που ένα request μπορεί να χρησιμοποιήσει.
    Limit Memory Grant % Ορίζω το maximum ποσοστό μνήμης που ένα request μπορεί να πάρει από το pool.
    Limit Grant Timeout (Sec) Ορίζω το maximum του χρόνου που ένα query θα περιμένει ένα resource να γίνει διαθέσιμο πριν αποτύχει.
    Limit Degree of Parallelism Ορίζω τον maximum αριθμό επεξεργαστών που το request μπορεί να χρησιμοποιήσει.
    Τι είναι τo Classifier Function?
    Είναι το function αυτό με το οποίο γίνεται η ανάθεση του νέου session/εφαρμογή σε workload group. Αυτό είναι ένα και μόνο ένα κάθε φορά δηλαδή δεν μπορώ να έχω ταυτόχρονα δύο classifier functions. Μετά από κάθε αλλαγή σε αυτό θα πρέπει να κάνω reconfigure τον R.G.
    Μέσα σε αυτό το function μπορώ να χρησιμοποιήσω system functions για να κατατάξω το session/εφαρμογή στο workload group όπως τα
    HOST_NAME APP_NAME Προσοχή σε αυτό διότι είναι κάτι το οποίο ορίζεται μέσα στο connection string της εφαρμογής και μπορεί να αλλαχθεί ανά πάσα στιγμή από κάποιον με σκοπό να πάρει καλύτερο workload group.
    SUSER_NAME SUSER_SNAME IS_SRVROLEMEMBER IS_MEMBER ORIGINAL_DB_ΝΑΜΕ και άλλα Δέστε στα BOL τι κάνει το καθένα.
    Υπάρχουν περιορισμοί?
    Βέβαια υπάρχουν και περιορισμοί και αυτοί είναι:
    Δουλεύει μόνο με το Database Engine. Δηλαδή όχι Analysis, Integration, Reporting Services. Ορίζεται ξεχωριστά για κάθε instance. Δηλαδή δεν έχω κεντρική διαχείριση για όλα τα instances του SQL Server. Δεν έχω την δυνατότητα να ελέγξω IO allocations μόνο MEMORY & CPU (μάλλον στην επόμενη έκδοση) Σε καμία περίπτωση δεν μπορώ να πως σε ένα συγκεκριμένο query να πάει γρηγορότερα. Ο Resource Governor είναι διαθέσιμος μόνο στην Enterprise Edition του SQL Server 2008. Παρατηρήσεις
    Ο R.G εφαρμόζεται μόνο όταν υπάρχει ανάγκη να εφαρμοστεί. Πχ. έχω μια εφαρμογή η οποία ανήκει σε ένα workload group στο οποίο έχω ορίσει max CPU 40%. Εφόσον την δεδομένη χρονική στιγμή που εκτελείται η εφαρμογή δεν υπάρχει κάποια άλλη που να είναι σε κάποιο άλλο group με μεγαλύτερο ποσοστό, δύναται να χρησιμοποιήσει όλη την CPU. To άθροισμα των μικρότερων (minimum) τιμών δεν μπορεί να περνάει το 100% Ότι πόρους αφήνουν ελεύθερους τα pools αυτά μοιράζονται. DEMO
    Την υλοποίηση του demo την έκανα με T-SQL. Βέβαια υπάρχει και γραφικό περιβάλλον για να υλοποιήσεις τον Resource Governor όπως θα δείτε και στα παρακάτω screen shoots.


    To demo θα το βρείτε εδώ
     
    Τα σχόλια σας είναι πάντα ευπρόσδεκτα!
  22. antonch
    Το Madison είναι ένας highly scalable data warehouse προσαρμογέας ο οποίος προσφέρει high performance σε χαμηλό κόστος μέσω μιας Massively Parallel Processing (MPP) αρχιτεκτονικής για τον SQL Server.
    Σε σχέση με τον ανταγωνισμό το Madison προσφέρει “hardware flexibility with configurations from the major hardware vendors and low cost through industry standard hardware”, όπως χαρακτηριστικά λεει η ανακοίνωση.
    Με αυτό το project η Microsoft μεγαλώνει το μέγεθος των data warehouses από τα περίπου 50GB που είναι σήμερα πάνω από το 1 Petabyte μέσω scaling out, αυτή την στιγμή έχουν φτάσει στα 20 nodes.
    Μέχρι σήμερα στην δοκιμή αυτή συμμετέχουν 10 πελάτες της Microsoft από 7 διαφορετικές επιχειρηματικές δραστηριότητες. Τα πρώτα αποτελέσματα είναι εντυπωσιακά όπως
    Data loading rate 1 TB / hour Processing query executions > 1,5 ΤΒ / min Για να συμμετέχει κάποιος σε αυτό το CTP θα πρέπει να έχει κάποιες προϋποθέσεις που έχουν ορισθεί, και ο αριθμός των συμμετεχόντων θα είναι περιορισμένος. Για όσους επιθυμούν να συμμετέχουν σε αυτό θα πρέπει να στείλουν mail στο [email protected]
    Για περισσότερες πληροφορίες για το Madison Project θα βρείτε εδώ
    · Madison Website: http://www.microsoft.com/sqlserver/2008/en/us/madison.aspx
    · SQL Server 2008 Website: http://www.microsoft.com/sqlserver/2008/en/us/default.aspx
  23. antonch
    Η Microsoft ανακοίνωσε και έβγαλε στην διάθεση του κοινού την πρώτη CTP έκδοση του Microsoft SQL Server Migration Assistant (SSMA) 2005 & 2008 (δύο ξεχωριστά). Όπως χαρακτηριστικά η εταιρεία λέει “. is a toolkit that dramatically cuts the effort, cost, and risk of migrating from MySQL to SQL Server. SSMA for MySQL v1.0 CTP1 provides an assessment of migration efforts as well as automates schema and data migration”.
    Download links
    Microsoft SQL Server Migration Assistant 2005 for MySQL v1.0 CTP1 Microsoft SQL Server Migration Assistant 2008 for MySQL v1.0 CTP1
×
×
  • Create New...