Jump to content

antonch

Administrators
  • Posts

    1030
  • Joined

  • Last visited

  • Days Won

    7

Blog Entries posted by antonch

  1. antonch
    Αν και είμαι σχεδόν σίγουρος ότι αρκετοί γνωρίζουν το συγκεκριμένο services, εντούτοις έχω εντοπίσει ότι υπάρχουν κενά στην γνώση γύρω από το συγκεκριμένο. Καθημερινά το βλέπω αυτό σε αρκετές εγκαταστάσεις…
    Εισαγωγή
    Ας ξεκινήσουμε με λίγη ιστορία.
    Το συγκεκριμένο service εμφανίστηκε στην έκδοση του SQL Server 2005 σαν επέκταση του SQL Server Resolution Protocol (SSRP) του SQL Server 2000.
    Σκοπός του
    Ο σκοπός του συγκεκριμένου service είναι να παρέχει πληροφορίες σχετικά με το instance και το port στις εισερχόμενες κλήσεις για σύνδεση σε αυτό (instance).
    Ο Ρόλος του
    Παίζει σημαντικότατο ρόλο στις περιπτώσεις που έχουμε περισσότερα από ένα instance στην ίδια μηχανή.
    Πώς το ξεκινάω/σταματώ
    Το συγκεκριμένο service μπορώ να το βρω και να το ξεκινήσω / σταματήσω μέσα από το γνωστό Service.mmc αλλά και από command line.Tο προτεινόμενο όμως είναι να χρησιμοποιούμε τον SQL Server Configuration Manager.
    Τι επιπτώσεις θα έχω αν το συγκεκριμένο service είναι σταματημένο;
    Ανάλογα με την περίπτωση.
    Εάν για παράδειγμα έχεις μόνο το default instance και στo default port (1433) είναι αδιάφορο αν θα είναι σταματημένο ή ξεκινημένο.
    Συνάντηση με την κυρία Μαρία (από το δεν περνάς κυρά Μαρία δεν περνάς) θα έχεις στις εξής περιπτώσεις όπου το service είναι σταματημένο:
    Όταν στο connection string δίνεις \Όταν στο connection string δίνεις \ Σε αυτή την περίπτωση για να μην δεις τη κυρά Μαρία θα πρέπει να δώσεις ,
    Επίσης εάν στα instances έχεις πει να χρησιμοποιούν dynamic port το συγκεκριμένο service χρειάζεται για να γίνει η σύνδεση αλλιώς θα πας να πιεις καφέ με την κυρά Μαρία.
    Τέλος αν είναι σταματημένο τα named instances δεν γίνονται publish στο δίκτυο. Αυτό σε κάποιους θα αρέσει!
    Μερικές χρήσιμες συμβουλές
    Εάν έχεις μόνο το default instance το οποίο ακούει στην 1433, τότε κλείστο, δεν υπάρχει νόημα να τρέχει ένα service που δεν κάνει τίποτα.
    Εάν έχει οποιοδήποτε firewall. Θα πρέπει να έχεις βάλει την UDP 1434 στην exception list. Αυτή είναι η πόρτα που ακούει το εν λόγω service.
    Εάν στην ίδια μηχανή έχεις SQL Server 2000 & SQL Server 2005/2008/2008 R2. Θα πρέπει να έχεις βάλει στον SQL Server 2000 τουλάχιστον SP3 για να μπορείς να παίξεις τον SQL Server 2000 με το SQL Server Browser service.
    Εάν είσαι σε Cluster θα πρέπει να είναι ξεκινημένο σε όλα τα cluster nodes και μάλιστα με τις ίδιες ρυθμίσεις.
    Το συγκεκριμένο service θα πρέπει να τρέχει πάντα με λογαριασμούς που έχουν τα ελάχιστα δικαιώματα. Αντιγράφω από τα BOL
    Deny access to this computer from the network Deny logon locally Deny logon as a batch job Deny logon through Terminal Services Log on as a service Read and write the SQL Server registry keys related to network communication (ports and pipes) Ελπίζω με όλα τα παραπάνω να μπήκαν κάπως τα πράγματα σε μια σειρά
    /*
    Keep Rocking with SQL Server
    antonch
    */
  2. antonch
    Μια από τις αγαπημένες functions που την χρησιμοποιώ αρκετά συχνά ιδιαίτερα σε περιπτώσεις που υπάρχει κάποιο πρόβλημα με συγκεκριμένη βάση είναι η fn_dblog.
    Παρόλο που είναι μια undocumented function εντούτοις είναι ευρέως γνωστή και φυσικά χρησιμοποιούμενη σε όσους σοβαρά ασχολούνται με τον SQL Server.
    Φυσικά είναι μια εναλλακτική λύση για να διαβάσεις τα περιεχόμενα του transaction log καθώς υπάρχουν και άλλοι τρόποι όπως η DBCC LOG και η DBCC LOGINFO που και αυτές είναι undocumented.
    Αυτό που με κάνει να χρησιμοποιώ την fn_dblog() είναι το γεγονός ότι μπορώ να πάρω τα δεδομένα μου σε μορφή table χωρίς να χρησιμοποιώ τεχνικές με temporary tables, καθώς επίσης μπορώ να έχω filtering σε αυτά με ένα απλό where statement πάνω σε αυτή.
    Η fn_dblog δέχεται δύο παραμέτρους τις @start και @end οι οποίες στην ουσία είναι από – έως LSN (Log Sequence Number) και σκοπό όπως είναι αυτονόητο έχουν να περιορίσουν το αποτέλεσμα στο δοσμένο διάστημα των LSNs. Φυσικά μπορείς να περάσεις την τιμή null και στις δύο εφόσον θέλεις να δεις όλο το Transaction Log.
    Στην περίπτωση που θέλεις να δεις το Transaction Log πχ της AdventureWorks2008R2 μπορείς σε ένα query window να δώσεις τα παρακάτω
    use AdventureWorks2008R2
    go

    select * from fn_dblog(null,null)
    go

    Το αποτέλεσμα που θα πάρεις είναι τεράστιο (117 πεδία) και δεν μπορεί να απεικονισθεί ολόκληρο αλλά ένα μικρό δείγμα από αυτό φαίνεται στην παρακάτω εικόνα





    Η χρησιμότητα της συγκεκριμένης function είναι σημαντική καθώς μπορείς να βρεις αν πχ ένα transaction σου είναι μέσα στο backup σου ή να μάθεις πως δουλεύει το checkpoint και πολλά ακόμα…


    Δεν θα ασχοληθώ με αυτά καθώς μπορείτε εύκολα να τα βρείτε στο web με μια απλή αναζήτηση.


    Το πρόβλημα


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


    Όπως ανάφερα παραπάνω η συγκεκριμένη function παίρνει δύο παραμέτρους οι οποίες σου δίνουν την δυνατότητα να περιορίσεις το αποτέλεσμα σου μεταξύ δύο διαφορετικών LSNs (από – έως LSN).


    Βλέποντας το αποτέλεσμα που επιστρέφεται από αυτή στην κολώνα Current LSN, η οποία στην ουσία είναι και αυτή που φιλτράρεται, θα υποθέσει κανείς ότι με τον ίδιο τρόπο θα περάσω και τις τιμές σε αυτές. Αμ δεν είναι έτσι…


    Τι είναι το LSN;


    Για να μπορέσω να δώσω την λύση σε αυτό το πρόβλημα επιστράτευσα τις γνώσεις μου στην ανάγνωση αυτού του «περίεργου αριθμού» που ονομάζεται LSN και τις οποίες πρέπει να μοιραστώ μαζί σας ώστε να γίνει κατανοητή η λύση του.


    Ξεκινώντας θα πρέπει να καταλάβουμε τι είναι το LSN και καλύτερος τρόπος για να μάθουμε για αυτό δεν είναι άλλος από τα BOL όπου στο link αυτό υπάρχει η ερμηνεία του.





    «Every record in the SQL Server transaction log is uniquely identified by a log sequence number (LSN). LSNs are ordered such that if LSN2 is greater than LSN1, the change described by the log record referred to by LSN2 occurred after the change described by the log record LSN.


    The LSN of a log record at which a significant event occurred can be useful for constructing correct restore sequences. Because LSNs are ordered, they can be compared for equality and inequality (that is, , >, =, , >=). Such comparisons are useful when constructing restore sequences.»



    Επίσης εκεί υπάρχει μια αρκετά σημαντική σημείωση





    «LSNs are values of data type numeric(25,0). Arithmetic operations (for example, addition or subtraction) are not meaningful and must not be used with LSNs. »



    Έχοντας αυτό σαν βασική γνώση που όμως δεν φτάνει καθώς θα πρέπει να γνωρίζουμε το Transaction Log Physical Architecture είμαστε σε θέση να μπορούμε αρχικά να διαβάζουμε και να εξηγούμε – κατανοούμε αυτόν τον «περίεργο αριθμό».


    Τα τρία μέρη του LSN


    Όπως έχετε δει ο αριθμός αυτός χωρίζεται σε τρία μέρη:



    Το πρώτο μέρος δείχνει το sequence number του Virtual Log File (VLF).

    Το δεύτερο μέρος δείχνει το offset του log block.

    Το τρίτο μέρος δείχνει τον αριθμό του slot μέσα στο log block.


    Έτσι αν πάρουμε από την παραπάνω εκτέλεση της function το πρώτο LSN που είναι ο 00000030:00000084:0001 και το μεταφράσουμε θα δούμε ότι



    Το VLF sequence number είναι το 00000030 ήτοι 0x30 ήτοι 48 στο δεκαδικό

    Το log block offset είναι το 00000084 ήτοι 0x84 ήτοι 132 στο δεκαδικό

    Το slot number είναι το 1


    Εκτελώντας την DBCC LOGINFO παίρνουμε το παρακάτω αποτέλεσμα





    Από το VLF sequence number μαθαίνουμε ότι είναι το 3o VLF (FSeqNo=48) το οποίο μάλιστα είναι ενεργό (Status=2), αρχίζει από το offset 925696 και το μέγεθος του είναι 458752.


    Επιβεβαιώνοντας πλέον το LSN μπορούμε να περάσουμε σωστά τις παραμέτρους στην fn_dblog.


    H λύση


    Έτσι το 00000030:00000084:0001 γίνεται 48:132:1 και αν πχ θέλουμε να διαβάζουμε μέχρι εκεί αρκεί να δώσουμε το παρακάτω query


    SELECT * FROM fn_dblog(null,N'48:132:1')

    Και το αποτέλεσμα μας θα είναι αυτό που ζητήσαμε !!!





    Keep Rocking with SQL Server


    /*antonch*/
  3. antonch
    Αρκετές φορές έχω ερωτηθεί και έχω πει την άποψη μου για το τι είναι ANSI Transact SQL και τι όχι, όπως επίσης έχω πει και το πόσο ο SQL Server έχει δώσει βάρος στο να είναι κοντά στο ANSI.

    Όπως και να έχει όμως είτε θέλω να γράφω pure ANSI επειδή ενδεχομένως να θέλω portability είτε γιατί απλά είμαι περίεργος και θέλω να ξέρω αυτό που γράφω πόσο ANSI είναι , μπορώ το κάνω απλά χρησιμοποιώντας την SET FIPS_FLAGGER level> πριν από την εκτέλεση του/των query(s) που θέλω να ελέγξω.

    Στην παράμετρο level ορίζω την «αυστηρότητα» του ελέγχου μου. Οι τιμές που η παράμετρος μπορεί να δεχθεί είναι




    Value
    Description

    ENTRY
    Standards checking for ISO entry-level compliance.

    FULL
    Standards checking for ISO full compliance.

    INTERMEDIATE
    Standards checking for ISO intermediate-level compliance.

    OFF
    No standards checking.
    Έτσι αν για παράδειγμα θέλω να ελέγξω αν το





    select top(5) * from sys.databases
    go




    είναι 100% ANSI Compatible τότε εκτελώ.





    set fips_flagger 'full'
    go

    select top(5) * from sys.databases
    go




    Το οποίο θα μου δώσεις τα παρακάτω messages





    FIPS Warning: Line 1 has the non-ANSI statement 'SET'.
    FIPS Warning: Line 2 has the non-ANSI clause 'TOP'.



  4. antonch
    Από το βασικότερα εργαλεία για όσους ασχολούνται με τον SQL Server είναι το SQL Server Management Studio (SSMS).
     
    To executable του εργαλείου αυτού είναι το ssms.exe και υπάρχει στο
     
    "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"
     
    Δεν ξέρω πόσοι από εσάς γνωρίζεται ότι το συγκεκριμένο εργαλείο έχει την δυνατότητα να πάρει command line arguments. Αυτά μπορείτε να τα δείτε αν πάτε μέσα από ένα command window και δώσε
     
    "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe" /?
     
    Θα σας εμφανιστεί το παρακάτω παράθυρο.
     

     
    Τι μπορώ όμως να κερδίσω γνωρίζοντας ότι ο SSMS παίρνει command line arguments;
     
    Μια χρήση που συχνά χρησιμοποιώ είναι για να γλυτώνω κάποια clicks και διαλόγους που εμφανίζονται όταν ανοίγω τον SSMS. Για παράδειγμα αν πειράξω το shortcut του SSMS όπως παρακάτω
     
    "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe" -E -S myServer -nosplash
     
    Δεν θα χρειαστεί να δώσω σε ποιον server θα συνδεθώ και θα εμφανιστεί το splash window. Έτσι με ένα click είμαι έτοιμος να δουλέψω άμεσα.
     
    /*antonch*/
  5. antonch
    Στο session αυτό θα ασχοληθούμε με όσα θέλουν και πρέπει να γνωρίζουν οι admins και οι devs ώστε να μπορούν να ασχοληθούν άμεσα και απρόσκοπτα με τα Reporting Services του SQL Server 2008R2. Στο συγκεκριμένο session θα ασχοληθούμε με τo Native installation και όχι με το SharePoint Integration το οποίο θα αποτελέσει θέμα για επόμενο SQL Saturday Night.
    Δεν υπάρχει κόστος για την παρακολούθηση (live από τον υπολογιστή σας) της παρουσίασης αυτής, αλλά είναι απαραίτητο να κάνετε εγγραφή εδώ. Οι θέσεις είναι περιορισμένες.
  6. antonch
    ΚΑΛΗ ΧΡΟΝΙΑ ΜΕ ΥΓΕΙΑ ΣΕ ΟΛΕΣ ΚΑΙ ΟΛΟΥΣ.
    Για ακόμα μια χρονιά και εγώ όπως και αρκετοί ακόμα έλαβα το email που με ενημέρωνε ότι συνεχίζω να είμαι MVP στον SQL Server. Τι καλύτερο να γιορτάσω την ανανέωση αυτή με ένα post.
    Το τελευταίο καιρό ασχολούμαι συνεχώς με τον SQL Server 2012 και παρακολουθώ πολλά γύρω από αυτόν. Κατά μια διαολεμένη σύπτωση το BI του SQL Server είναι στην καθημερινότητα μου όλο και περισσότερο, όχι βέβαια ότι με χαλάει.
    Βρέθηκα στην ανάγκη για λόγους “πειραματικούς” να στήσω σε σχεδόν παραγωγικό περιβάλλον τον SQL Server 2012 RC0 και έπρεπε να μεταφέρω αρκετά SSIS Packages που είχα φτιάξει στην προηγούμενη έκδοση.
    Η εμπειρία είναι πραγματικά smooth and easy αρκεί να ακολουθήσεις τα πέντε παρακάτω tips που υπάρχουν στο άρθρο αυτό και είναι μέσα από την ομάδα του SSIS. Για το λόγο αυτό σας τα δίνω όπως έχουν με την επισήμανση ότι αυτά δίνονται από την ομάδα σαν AS IS.
     
    TIP #1: Edit Package Configuration and Data Source after upgrading

    The first step to upgrade an SSIS solution is to run the SSIS Package Upgrade Wizard. The SSIS Package Upgrade Wizard makes appropriate changes to package properties and upgrades the package format.
    The wizard launches when you open a pre-SQL Server 2012 package in the SQL Server Data Tools for the first time. SQL Server Data Tools replaces (BIDs). The wizard can also be launched manually by running SSISUpgrade.exe, which is located under %ProgramFiles%\Microsoft SQL Server\110\DTS\Binn.
    It is critical to note that the SSIS Package Upgrade Wizard does not upgrade settings such as connection strings that are defined in the package configurations. After a package upgrade, you may need to make some manual changes to the package configuration to run the upgraded package successfully.
    For example, you have an SSIS 2005 package. The package uses an OLE DB connection manager to connect to the AdventureWorks database in a local SQL Server 2005 instance. The package also uses an XML package configuration file to dynamically configure the ConnectionString property of the OLE DB connection manager. The following shows the contents of the XML package configuration file.

    You have set up a machine with a standalone SQL Server 2012 installation. You move the SSIS 2005 package to the machine and run the SSIS Package Upgrade Wizard to upgrade the package to SQL Server 2012. When the wizard finishes, you need to manually change the provider name from SQLNCLI.1 to SQLNCLI11.1 in the XML package configuration file to run the upgraded package successfully. The wizard does not update package configuration files.
    If you don’t update the provider name in the configuration file, the file configures the OLE DB connection manager to use the SQLNCLI.1 provider that is the SQL Server 2005 Native Client Library. SQLNCLI11.1 is the SQL Server 2012 Native Client Library. Because the SQL Server 2005 Native Client Library is not included in SQL Server 2012, the following error message will appear when you open or execute the upgraded package on the machine where SQL Server 2012 is installed:
    The requested OLE DB provider SQLNCLI.1 is not registered. If the 32-bit driver is not installed, run the package in 64-bit mode. Error code: 0x00000000. An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered".
    So, if your pre-SQL Server 2012 package uses any kind of package configurations, it is important to remember that you may need to manually update the content of the package configurations after you upgrade the package to SQL Server 2012. This applies to the different types of configurations, such as XML configuration files.
    Connection strings that require updates and are stored in data source files or set by expressions, need to be updated manually.
    TIP #2: Convert to project deployment model using Project Conversion Wizard
    SQL Server 2012 SSIS supports two deployment models: the package deployment model and the project deployment model. The package deployment model was available in previous releases of SSIS and is the default deployment model for upgraded packages. In this model, the unit of deployment is the package. The project deployment model is new in SQL Server 2012 and provides additional package deployment and management features such as parameters and the Integration Services catalog. The unit of deployment is the project.
    Please read Project Deployment Overview in SQL Server "Denali" CTP1 - SSIS (http://social.technet.microsoft.com/wiki/contents/articles/project-deployment-overview-in-sql-server-quot-denali-quot-ctp1-ssis.aspx ) for a detailed walk through as well as comparison between these two deployment models.
    Read Projects in SQL Server “Denali” CTP1 - SSIS (http://social.technet.microsoft.com/wiki/contents/articles/projects-in-sql-server-denali-ctp1-ssis.aspx) for a thorough explanation of the new project concept.
    To convert a package to the project deployment, right click the project in Solution Explorer and then click Convert to Project Deployment Model. The Project Conversion Wizard launches and walks you through the conversion process.

    TIP #3: Update Execute Package Task to use project reference and use parameter to pass data from parent package to child package
    If an SSIS package contains an Execute Package Task, the Project Conversion Wizard prompts you to update the task to use the project reference.
    For example, your SSIS project contains several packages. Inside the project, one package (typically called the parent package) runs another package (typically called the child package) by using an Execute Package Task. In Pre-SQL Server 2012 releases of SSIS, the parent package references the child package by using a File connection manager. At deployment, you need to remember to update the File connection manager to ensure that it points to the new location of the child package.
    In SQL Server 2012 Integration Services you can configure the parent package to reference the child package by name when the child package is included in the same project as the parent package. Using this project reference makes the deployment experience much smoother. You don’t need to remember to update the reference between the parent package and the child package at deployment. For a thorough explanation of the project reference in the Execute Package Task, please see Changes to the Execute Package Task (http://blogs.msdn.com/b/mattm/archive/2011/07/18/changes-to-the-execute-package-task.aspx).
    In previous releases of SSIS, you pass data from the parent package to the child package by creating a package configuration that uses the parent variable configuration type. This enables a child package that is run from a parent package to access a variable in the parent.
    It is recommended that you configure the Execute Package Task to use parameter binding to pass data from the parent package to the child package. Parameters make this task easier. For example, you want a parent package to dynamically determine the number of days in a current month and have the child package perform a task for that number of times. You can create a variable in the parent package that represents the number of days and create a parameter in the child package. Then in the Execute Package Task, you bind the parameter in the child package to the variable in the parent package.

    Please read Parameters in SQL Server “Denali” CTP1 - SSIS (http://social.technet.microsoft.com/wiki/contents/articles/parameters-in-sql-server-denali-ctp1-ssis.aspx) for a description of parameters and the numerous benefits they offer.
    TIP #4: Parameterize PackageName property of Execute Package Task to dynamically configure which child package to run at execution time
    Suppose your SSIS 2008 package has an Execute Package Task, and the package uses a File connection manager to connect to a child package. You dynamically assign which child package the Execute Package Task runs by configuring the connection string property of the File connection manager.
    The following is the content of the XML package configuration file used by your SSIS 2008 package.

    When the Project Conversion Wizard converts the package to the project deployment model and updates the Execute Package Task to use the project reference, the File connection manager that was used to connect to the child package is no longer used by the Execute Package Task. To continue to dynamically determine which child package the task runs, you create a parameter and map that parameter to the PackageName property of the Execute Package Task as shown in the following image.

    TIP #5: Convert package configuration to parameter when possible
    Parameters are new to SQL Server 2012 Integration Services and are the replacement for package configurations. You use parameters to assign values to package properties, whether at design time or run time. The values are pushed to a package when it is executed rather than having the package pull values from the package configurations.
    The Project Conversion Wizard prompts you to optionally convert package configurations to parameters. It is possible that you might choose to keep a package configuration as an intermediate step of upgrading to SQL Server 2012. When your package has both configuration values and parameter values, it is important to understand the order in which these values are applied. Package configuration values will be applied first. If there are also parameter values for the same properties, these values will be applied next and will overwrite the package configuration values.
  7. antonch
    Σε μια μεγάλη εφαρμογή που έχουμε αναπτύξει κάνουμε μεγάλη χρήση του Filestream feature που έχει ο SQL Server.
    Μέχρι σήμερα τα αρχεία, κυρίως φωτογραφίες σε διάφορα formats (png, jpg, bmp) που ανέβαιναν δεν ήταν ιδιαίτερα μεγάλα.
    Σήμερα όμως ήρθαμε αντιμέτωποι με το να ανεβεί ένα αρχείο που είχε μέγεθος 25ΜΒ.
    Φυσικά αυτό δεν μπορούσε να γίνει καθώς δεν επιτρεπόταν από τις default ρυθμίσεις που έχει ο SQL Server καθώς αυτές θέτουν περιορισμό στα 64ΚΒ.
    Η λύση που υπάρχει για αυτό ώστε να επιτρέπονται μεγαλύτερα αρχεία (2GB το μέγιστο) είναι να αλλάξεις την ρύθμιση που ορίζεται από το max text repl size configuration setting
    Αν και αυτό δεν έχει να κάνει με το filestream άμεσα αλλά με το μέγιστο μέγεθος των text, ntext, varchar(max), nvarchar(max), varbinary(max), xml, image data types που γίνονται replicate ή συμμετέχουν σε CDC, όπως αναφέρουν τα BOL, παρόλα αυτά όμως με την ρύθμιση αυτή δίνεται η δυνατότητα να περάσω μεγάλα αρχεία στο filestream
    Όπως ανέφερα και παραπάνω η default τιμή είναι 65536 bytes. Η μέγιστη τιμή είναι 2147483647 bytes και αν βάλεις την τιμή -1 σημαίνει unlimited (μέχρι το max φυσικά)
    Η ρύθμιση αυτή δεν χρειάζεται για ισχύσει να γίνει restart o SQL Server και για την ορίζεις αρκεί να γράψεις σε ένα νέο query window τα παρακάτω
    sp_configure 'max text repl size', -1

    go

    reconfigure

    go

     
  8. antonch
    Από χθες είναι διαθέσιμη η πρώτη RC του SQL Server 2012.

    Η εταιρία συνεχίζοντας την ανάπτυξη του προιόντος στο τρίπτυχο

    FURTHER, FORWARD, FASTER

    πρόσθεσε μερικά ακόμα χαρακτηριστικά όπως το CDC support for Oracle, κάποιες ακόμα βελτιώσεις στο AlwaysOn και αρκετά ακόμα features στο Power View, SQL Data Tools, LocalDB, SQL Azure

    Download SQL Server 2012 RC today here.

    Learn more about SQL Server 2012 at www.microsoft.com/sql server.
  9. antonch
    Ένα από τα εργαλεία τα οποία έχουμε στην διάθεση μας για να κάνουμε tuning τον SQL Server είναι και ο Database Engine Tuning Advisor (DTA).

    Ένα αρκετά καλό εργαλείο που μπορείς εύκολα να πάρεις σχεδόν άμεσα απάντηση που θα σου βελτιώνει το performance στα queries σου.

    Μέχρι τώρα η τροφή που έπρεπε να δώσεις στο εργαλείο αυτό ήταν ή ένα trace workload ή ένα script με τα queries που ήθελες να ελέγξεις.

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

    Παρόλα αυτά όμως κάνουμε επιβεβαίωση χρησιμοποιώντας διάφορες τεχνικές κυρίως με T-SQL commands.

    Στο SQL Server 2012 όταν πάμε να κάνουμε restore μια βάση μέσα από το GUI θα δούμε πλέον όπως φαίνεται στην παρακάτω εικόνα ένα button με τίτλο Timeline
    [View article]
  11. antonch
    Αρκετές φορές έχω ερωτηθεί αν μπορεί να γίνει μετατροπή των υφιστάμενων report που είναι φτιαγμένα με Crystal Reports (.rtp) σε SQL Server Reporting Services (.rdl). Αυτό και άλλα πολλά ήταν και είναι εφικτό να γίνουν αρκεί να βουτούσες για τα καλά μέσα στο SQL Server 2008 R2 Reporting Services Migration Guide.

    Πρόσφατα στο Microsoft | Business Intelligence site, η Microsoft μας ενημερώνει ότι μια εταιρεία... [read more]
  12. antonch
    It is my pleasure to announce the release of SQL Server 2008 R2 Cumulative Update 10 on behalf of the SQL Server Sustained Engineering group. SQL Server 2008 R2 Cumulative Update 10 resolves 23 issues reported by 20 unique customers.

    Successful release of Cumulative Update 10 is a testament to the commitment of the many teams within the SQL BU, who are finding solutions to provide a better customer experience. The coordination, determination and execution between all the SQL BU teams was instrumental in continuing the SQL Sustained Engineering team’s long standing track record for on time release of Cumulative Updates.
    With the release of SQL Server 2008 R2 Cumulative Update 10, there are 23 items released to the customers within 1 CU cycle. For a complete breakdown of release details please see the table & chart below.
     
     
    Product Unit
    On Time
    Porting Request
    Late
    Grand Total
    Analysis Services
      3
    2
    5
    Manageability
        1
    1
    Reporting Services
        2
    2
    SQL Engine
    1
    4
    5
    10
    Integration Services
      2
      2
    Deployment Platform
      1
      1
    SQL Connectivity
      2
      2
    Grand Total
    1
    12
    10
    23
     
    As we look towards the next Cumulative Update we welcome any suggestions you may provide to improve future Cumulative Update projects. Please send your suggestions and feedback to sqlsecu. Look for information & announcements for upcoming SQL Server 2008 R2 CU #11 .
    This CU will be available for download from http://hotfix. The associated cumulative KB article has also been published. Customers are directed to contact CSS to get the CU build or obtain the hotfix package through the new self-service feature by clicking on the “Hotfix Download Available” button found at the top of the KB article.
    Public KB Article Hotfix Download Location Build Release Share Location SQL Server 2008 R2 CU10 Fix List CU Website This announcement will also be posted on
    SQL Release Services Blog SQL Support Center Microsoft TechNet: SQL Server MSDN: SQL Server DevCenter Thank You,
    Abhishek Sinha
    SQL Server Sustained Engineering Team
  13. antonch
    It is my pleasure to announce the release of SQL Server 2008 R2 SP1 Cumulative Update 3 on behalf of the SQL Server Sustained Engineering group. SQL Server 2008 R2 SP1 Cumulative Update 3 resolves 34 issues reported by 30 unique customers.
    Successful release of Cumulative Update 3 is a testament to the commitment of the many teams within the SQL BU, who are finding solutions to provide a better customer experience. The coordination, determination and execution between all the SQL BU teams was instrumental in continuing the SQL Sustained Engineering team’s long standing track record for on time release of Cumulative Updates.
    With the release of SQL Server 2008 R2 SP1 Cumulative Update 3, there are 34 items released to the customers within 1 CU cycle. For a complete breakdown of release details please see the table & chart below.
    Product Unit

    Porting Request
    Late
    Grand Total
    Analysis Services
    8
    5
    13
    Manageability
    1
    1
    2
    Master Data Services
    1
    1
    Reporting Services
    1
    3
    4
    SQL Engine
    9
    9
    Integration Services
    3
    3
    Deployment Platform
    1
    1
    2
    Grand Total
    23
    11
    34

    As we look towards the next Cumulative Update we welcome any suggestions you may provide to improve future Cumulative Update projects. Please send your suggestions and feedback to sqlsecu. Look for information & announcements for upcoming SQL Server 2008 R2 SP1 CU #4 .
    This CU will be available for download from http://hotfix. The associated cumulative KB article has also been published. Customers are directed to contact CSS to get the CU build or obtain the hotfix package through the new self-service feature by clicking on the “Hotfix Download Available” button found at the top of the KB article.
    · Public KB Article
    · Hotfix Download Location
    · Build Release Share Location
    · SQL Server 2008 R2 SP1 CU3 Fix List
    · CU Website
    This announcement will also be posted on
    · SQL Release Services Blog
    · SQL Support Center
    · Microsoft TechNet: SQL Server
    · MSDN: SQL Server DevCenter
    Thank You,
    Abhishek Sinha
    SQL Server Sustained Engineering Team
  14. antonch
    Την προηγούμενη εβδομάδα έγινε το SQL PASS SUMMIT 2011 στο Seattle. Στο keynote o Ted Kummert έκανε διάφορες ανακοινώσεις μία από αυτές ήταν ότι το τελικό όνομα για τα SQL Server Developer Tools με την κωδική ονομασία Juneau θα είναι SQL Server Data Tools (SSDT).
     
    Όμως πέρα από την ονομασία ας δούμε μερικά χαρακτηριστικά των SSDT
    Θα είναι διαθέσιμο σε όλους τους SQL Server users σαν free component!!! Θα παίζει με SQL Server 2005, 2008, 2008 R2, 2012 και Azure! Θα γίνεται update κάθε 4-6 μήνες ακολουθόντας τα updates του SQL Azure. Θα είναι hosted στο Visual Studio 2010 SP1 shell. Θα είναι ο αντικαταστάτης των database tools & projects στην επόμενη έκδοση του Visual Studio. Τέλος η full έκδοση θα είναι διαθέσιμη Online με την χρήση του Web Platform Installer
  15. antonch
    Το πρόβλημα
    Σαν DBA και ειδικά σε enterprise environments έχουμε το καθήκον να διαχειριζόμαστε ένα αρκετά σημαντικό αριθμό από SQL Server instances που υπάρχουν διάσπαρτα μέσα στο οργανισμό ή την εταιρεία στην οποία εργαζόμαστε. Αυτό σημαίνει ότι πρέπει καθημερινά να παρακολουθούμε την πορεία αυτών των instances ώστε προληπτικά και όχι πυροσβεστικά να δίνουμε λύσεις σε issues που τυχόν θα εμφανιστούν.
    Για να μπορώ όμως σαν DBA να έχω την εικόνα όλων των instances που διαχειρίζομαι θα πρέπει να τα παρακολουθώ ξεχωριστά και αυτό είναι ένας μεγάλος καθημερινός πόνος. Λύσεις για αυτό υπάρχουν πολλές. Τόσο η Microsoft όσο και third party vendors μας παρέχουν σουίτες εργαλείων που μας βοηθούν στο συγκεκριμένο task. Φυσικά αυτό σημαίνει έξτρα κόστος και αξία έχει να το επωμιστώ εφόσον έχω και αλλά πράγματα που θέλω να παρακολουθώ με την χρήση τους. Αν έχω όμως ή θέλω μόνο να παρακολουθώ SQL Server instances αξίζει να επωμιστώ το κόστος;
    Το εργαλείο
    Κατά την άποψη μου όχι καθώς έχω πληθώρα από εργαλεία που ο SQL Server μου δίνει. Ένα από αυτά που δεν είναι και τόσο δημοφιλές (κακώς κατά την άποψη μου), και είναι διαθέσιμο στις Datacenter και Enterprise εκδόσεις τους SQL Server 2008 R2, είναι το SQL Server Utility (SSU).
    To SSU δίνει την δυνατότητα στο DBA να μοντελοποιήσει όλα τα instances που έχει υπό την προστασία του μέσα στην εταιρεία, ώστε μέσω ενός unified view να μπορεί να έχει μια ολιστική εικόνα των resources που το κάθε instance έχει, συγκεντρωτικά ή αναλυτικά μέσω των SQL Server Utility viewpoints. Όλα αυτά μέσα από το γνώριμο σε αυτόν περιβάλλον που δεν είναι άλλο από το SQL Server Management Studio (SSMS).
    Πως λειτουργεί
    Θεμέλιο στην λειτουργία του SSU είναι η δημιουργία ενός κεντρικού σημείου στο οποίο θα συγκεντρώνονται σε τακτά χρονικά διαστήματα (το default interval είναι κάθε 15 λεπτά) στοιχεία που αφορούν SQL Server instances, Data-tier applications, Database files και Storage volumes. Το σημείο αυτό ονομάζεται Utility Control Point (UCP).
    Στην πραγματικότητα το UCP δεν είναι τίποτα περισσότερο από μια database που δημιουργείται στο instance που έχω επιλέξει σαν σημείο συγκέντρωσης των δεδομένων και παίζει το ρόλο ενός data warehouse.
    Από την στιγμή που ο DBA ορίσει το UCP θα πρέπει να εντάξει σε αυτό τα instance που θέλει να παρακολουθεί ώστε να αρχίσει η συγκέντρωση δεδομένων από αυτά και η αποστολή τους προς το UCP.
    Τα δεδομένα που αποστέλλονται από το κάθε instance προς το UCP αφορούν παράγοντες που είναι σημαντικοί για την λειτουργία ενός SQL Server όπως CPU utilization, Storage space utilization.
    Το σημαντικότερο όμως δεν είναι η απλή καταγραφή που έτσι και αλλιώς έχουμε και άλλους τρόπους με τους οποίους μπορούμε να την υλοποιήσουμε όσο η δυνατότητα να συγκρίνουμε τα καταγεγραμμένα αυτά δεδομένα με polices τις οποίες μπορούμε να ορίσουμε μέσα σε αυτό (SSU) είτε καθολικά για όλα τα instances είτε για το κάθε ένα ξεχωριστά. Αυτά αφορούν τις εξής κατηγορίες:
    Instance CPU utilization policies για SQL Server instances και data-tier applications. File space utilization policies για database και log files. Computer CPU utilization policies για host resources Storage volume utilization policies για host resources H συλλογή, αποστολή, επεξεργασία των δεδομένων γίνεται με την χρήση jobs που δημιουργούνται στο κάθε instance που συμμετέχει και για το λόγο αυτό είναι υποχρεωτική η ενεργοποίηση του SQL Server Agent στο κάθε ένα ξεχωριστά το οποίο μάλιστα θα πρέπει να ξεκινάει με domain account.
    Στην παρακάτω εικόνα (κλεμμένη από τα BOL) βλέπουμε μια επισκόπηση της λειτουργίας-αρχιτεκτονικής που το εργαλείο χρησιμοποιεί ώστε να επιτύχει τον σκοπό του.

    Απαιτήσεις
    Φυσικά για την χρήση του SSU υπάρχουν κάποιες απαιτήσεις για τα instance τα οποία μπορούν να συμμετέχουν στην ενημέρωση των στοιχείων και αυτές είναι
    Τα SQL Server instances πρέπει να είναι έκδοσης 10.50 (SQL Server 2008 R2) ή μεγαλύτερη, μπορούμε όμως να έχουμε και 10.00 (SQL Server 2008) αρκεί σε αυτή να έχουμε το SP2. Καταγράφονται πληροφορίες μόνο για τα Database Engine instance και μόνο αυτά μπορούν να μπουν. Το SSU πρέπει να λειτουργεί με Windows domain account. Τα accounts του SQL Server service στο UCP αλλά και σε όλα τα instances που στέλνουν δεδομένα πρέπει να έχουν read permission στους Users στο Active Directory. Απαιτήσεις όμως έχει και το instance το οποίο θα παίζει το ρόλο του UCP και αυτές είναι:
    Η SQL Server edition πρέπει να είναι Datacenter, Enterprise, Developer, ή Evaluation. Πρέπει να υπολογίζουμε περίπου 2GB χώρου στην UCP database (sysutility_mdw) για κάθε managed instance το χρόνο. Ακόμα
    Εάν το UCP instance είναι σε case-insensitive collation τότε όλα τα managed instances του SQL Server πρέπει και αυτά να είναι σε case-insensitive collation. Προτείνετε το UCP instance είναι σε case-sensitive collation Τέλος FILESTREAM data δεν υποστηρίζονται στο SSU. Επίλογος
    Προσωπικά πιστεύω ότι το συγκεκριμένο εργαλείο θα πρέπει να τύχη της προσοχής σας για αυτό και αξίζει να του δώσετε μια ευκαιρία δοκιμάζοντας το. Δεν σας γράφω λεπτομερείς οδηγίες χρήσης αν και μου ήταν εύκολο και αυτό γιατί όλα όσα θέλετε να μάθετε για την χρήση του υπάρχουν στα BOL στο link αυτό Managing the SQL Server Utility
  16. antonch
    Όπως αρκετές φορές έχω αναφέρει, τρεις είναι οι παράγοντες που επηρεάζουν την λειτουργία ενός SQL Server και αυτοί είναι: Memory, CPU, I/O.
    Αρκετοί συνάδελφοι δηλώνουν λάτρεις των Dynamic Management Views (DMV) μεταξύ αυτών είμαι και εγώ , όμως το μυστικό σε αυτές είναι να τις χρησιμοποιείς έτσι ώστε να παίρνει από αυτές συνδυαστικά τις περισσότερες φορές τη μέγιστη δυνατή πληροφορία που αυτές μπορούν να σου σώσουν.
    Σε αυτό το post θα σας δείξω πως χρησιμοποιώντας μια εξ αυτών θα μπορέσουμε να αποφανθούμε αν έχουμε IO πρόβλημα στον SQL Server μας γενικά, αλλά και ειδικά σε ποια ή ποιες database(s).
    Δεν θα σας απασχολήσω με την γενική σύνταξη της DMV αυτής ούτε και το τι δείχνει, καθώς είναι εύκολο να το κάνει κάποιος τα BOL.
    Για λόγους καθαρά πρακτικούς όμως θα αναφέρω ότι η sys.dm_io_virtual_file_stats επιστρέφει Ι/Ο στατιστικά για τα database files.
    Εκτελώντας απλά ένα
    Query 1 select * from sys.dm_io_virtual_file_stats(null,null) θα πάρουμε ένα αρκετά μεγάλο, ανάλογα πάντα με τον αριθμό των βάσεων και τα αρχεία που έχουμε σε αυτές.
    Επίσης αρκετά μεγάλος είναι και ο αριθμός των πληροφοριών που μας επιστέφει η dmv αυτή. Έτσι κάπως εύκολα χάνεται κάποιος και δεν μπορεί να βγάλει το επιθυμητό αποτέλεσμα. Αν όμως αρχίσει να φιλτράρει το τι πληροφορία θα χρησιμοποιήσει από την DMV αυτή τότε πραγματικά θα πάρει το αποτέλεσμα που επιθυμεί. Αφού έχουμε διαβάσει από τα BOL το τι μας επιστρέφει αυτή εύκολα μπορούμε να υπολογίσουμε το I/O για κάθε database χρησιμοποιώντας τα num_of_bytes_read και num_of_bytes_written πεδία αυτής. Αυτό μπορεί να γίνει με το παρακάτω query
    Query 2 SELECT     DB_NAME(database_id) AS database_name,     CAST(SUM(num_of_bytes_read + num_of_bytes_written) / (1024*1024) AS DECIMAL(12, 2)) AS db_IO_in_MB FROM     sys.dm_io_virtual_file_stats(NULL, NULL)-- AS d GROUP BY     database_id ORDER BY     2 DESC  
    Όμως θα ήθελα να έχω ακόμα μία στήλη που να μου δείχνει το ποσοστό Ι/Ο σε κάθε βάση σε σχέση με το συνολικό Ι/Ο που έχω. Έτσι το παραπάνω query διαμορφώνεται ως εξής:
    Query 3 WITH DB_IO_STATISTICS AS (   SELECT     DB_NAME(database_id) AS database_name,     CAST(SUM(num_of_bytes_read + num_of_bytes_written) / (1024*1024) AS DECIMAL(12, 2)) AS db_IO_in_MB   FROM     sys.dm_io_virtual_file_stats(NULL, NULL)   GROUP BY     database_id ) SELECT   database_name,   db_IO_in_MB,   CAST(db_IO_in_MB / SUM(db_IO_in_MB) OVER() * 100  AS DECIMAL(5, 2)) AS [% IO] FROM     DB_IO_STATISTICS ORDER BY     [% IO] desc;  
    Στις περισσότερες περιπτώσεις το παραπάνω query και το αποτέλεσμα του μας κάνει, και μπορούμε να εντοπίσουμε αυτές τις databases που έχουν πρόβλημα Ι/Ο. Όμως ποιο ή ποια είναι τα αρχεία από αυτή ή αυτές που πραγματικά έχουν πρόβλημα Ι/Ο, ώστε να τα μεταφέρουμε σε άλλο disk array; Απάντηση στο ερώτημα αυτό δίνει το παρακάτω query
    Query 4 WITH DB_IO_STATISTICS AS (   SELECT     DB_NAME(fs.database_id) AS database_name,     mf.name as logical_file_name,     CAST(SUM(fs.num_of_bytes_read + fs.num_of_bytes_written) / (1024*1024) AS DECIMAL(12, 2)) AS db_IO_in_MB   FROM     sys.dm_io_virtual_file_stats(NULL, NULL) as fs   INNER JOIN     sys.master_files as mf on fs.database_id=mf.database_id and fs.file_id = mf.file_id   GROUP BY     fs.database_id,mf.name ) SELECT   database_name,   logical_file_name,   db_IO_in_MB,   CAST(db_IO_in_MB / SUM(db_IO_in_MB) OVER() * 100  AS DECIMAL(5, 2)) AS [% IO] FROM     DB_IO_STATISTICS ORDER BY     [% IO] desc;  
    Από το παραπάνω εύκολα βλέπουμε ποιο file και σε ποια database έχει I/O issues. Όμως και αυτό δεν είναι αρκετό. Αν για παράδειγμα δούμε ότι κάποιο file έχει 80% Ι/Ο δεν σημαίνει απαραίτητα ότι είναι και προβληματικό. Για να μπορέσουμε να αποφανθούμε θα πρέπει να ελέγξουμε το πόσο περιμένει ή περιμένουν ο χρήστης ή οι χρήστες μέχρι να εκτελέσουν ένα read ή ένα write και αυτό διότι άλλο να είναι ένας χρήστης στην βάση και άλλο πολλοί.
    Για να γίνει αυτό θα πρέπει να δούμε τα στοιχεία που τα πεδία io_stall_read_ms και io_stall_write_ms της DMV μας δίνουν και να τα συνδυάσουμε με τα μέχρι τώρα διαμορφωμένα στοιχεία. Αυτά δείχνουν πόσο περιμένουν οι χρήστες για να κάνουνε ένα read ή write. Βέβαια υπάρχει και το io_stall που δείχνει το σύνολο που οι χρήστες περιμένουν για read και write. Εδώ επειδή δεν μας ενδιαφέρει να το αναλύσουμε περισσότερο αν και είναι εύκολο σαν άσκηση να το κάνετε θα πάρουμε το σύνολο και το παραπάνω query μετατρέπεται ως εξής
    Query 5 WITH DB_IO_STATISTICS AS (   SELECT     DB_NAME(fs.database_id) AS database_name,     mf.name as logical_file_name,     CAST(SUM(fs.num_of_bytes_read + fs.num_of_bytes_written) / (1024*1024) AS DECIMAL(12, 2)) AS db_IO_in_MB,     SUM(fs.io_stall) as io_stall   FROM     sys.dm_io_virtual_file_stats(NULL, NULL) as fs   INNER JOIN     sys.master_files as mf on fs.database_id=mf.database_id and fs.file_id = mf.file_id   GROUP BY     fs.database_id,mf.name ) SELECT   database_name,   logical_file_name,   db_IO_in_MB,   CAST(db_IO_in_MB / SUM(db_IO_in_MB) OVER() * 100  AS DECIMAL(5, 2)) AS [% IO],   CAST(io_stall / 1000. as DECIMAL(10,2)) as io_stall_in_seconds,   CAST(100. * io_stall / SUM(io_stall) OVER() AS DECIMAL(10, 2)) AS [% IO stall] FROM     DB_IO_STATISTICS ORDER BY     [% IO stall] desc  
    Και επειδή πιθανότατα κάποιος να θελήσει να δει όλα τα παραπάνω αλλά σε επίπεδο drive στο οποίο φυσικά έχει database files ώστε να δει που μπορεί να μεταφέρει database files ώστε να εξομαλύνει το I/O πρόβλημα του, υπάρχει και αυτό σαν δυνατότητα χρησιμοποιώντας την ίδια dmv όπως παρακάτω
    Query 6 WITH DB_IO_STATISTICS AS (   SELECT     left(mf.physical_name,1) as drive,     CAST(SUM(fs.num_of_bytes_read + fs.num_of_bytes_written) / (1024*1024) AS DECIMAL(12, 2)) AS db_IO_in_MB,     SUM(fs.io_stall) as io_stall   FROM     sys.dm_io_virtual_file_stats(NULL, NULL) as fs   INNER JOIN     sys.master_files as mf on fs.database_id=mf.database_id and fs.file_id = mf.file_id   GROUP BY     left(mf.physical_name,1) ) SELECT   drive,   db_IO_in_MB,   CAST(db_IO_in_MB / SUM(db_IO_in_MB) OVER() * 100  AS DECIMAL(5, 2)) AS [% IO],   CAST(io_stall / 1000. as DECIMAL(10,2)) as io_stall_in_seconds,   CAST(100. * io_stall / SUM(io_stall) OVER() AS DECIMAL(10, 2)) AS [% IO stall] FROM     DB_IO_STATISTICS ORDER BY     [% IO] desc /*antonch*/
  17. 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*/
  18. 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
  19. antonch
    Αρκετές φορές είναι απαραίτητο να καταγράφονται οι αλλαγές που γίνονται στις εγγραφές των πινάκων σε μια βάση. Μέχρι πριν τον SQL Server 2008 υπήρχαν οι παραδοσιακές μέθοδοι όπως πχ triggers. Τώρα όμως υπάρχουν και άλλοι τρόποι. Σε αυτή την παρουσίαση θα δούμε τους άλλους αυτούς τρόπους.
    Για να παρακολουθήσετε την παρουσίαση αυτή θα πρέπει να κάνετε εγγραφή πατώντας απλά στο παρακάτω image.

    Όσοι παρακολουθήσουν ζωντάνα την παρουσίαση αυτή θα συμμετάσχουν στην κλήρωση που θα γίνει για ένα (1) μήνα δωρεάν εκπαίδευση σε .NET από την pluralsight
  20. antonch
    Αν ποτέ κατα την διάρκεια που σχεδιάζετε ένα report μέσα στο BIDS χαθεί ξαφνικά το Report Data window το οποίο εμφανίζει τα datasets τα οποία χρησιμοποιούνται στο report που φτιάχνετε μην σας πιάσει πανικός, αλλα ούτε να ψάξετε στα menus.
    Απλά πατήστε Ctrl+Alt+D
  21. antonch
    Για όσους θέλουν να χρησιμοποιήσουν ένα hotmail account σαν SMTP account για το SQL Server Database Mail θα πρέπει να κάνουν τις ρυθμίσεις σε αυτό όπως φαίνονται στην παρακάτω εικόνα

    ΠΡΟΣΟΧΗ ΠΡΟΣΟΧΗ ΠΡΟΣΟΧΗ
    ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ ΔΕΝ ΠΡΕΠΕΙ ΝΑ ΣΥΠΛΗΡΩΘΟΥΝ ΤΑ ΕΞΗΣ ΠΕΔΙΑ ΤΗΣ ΠΑΡΑΠΑΝΩ ΦΟΡΜΑΣ ΚΑΘΩΣ ΑΝ ΑΥΤΟ ΓΙΝΕΙ ΔΕΝ ΘΑ ΜΠΟΡΕΙΤΕ ΝΑ ΣΤΕΙΛΕΤΕ EMAIL.
    Description Display Name Reply e-mail
  22. antonch
    Σκεφτόμαστε να αλλάξουμε την ημέρα διεξαγωγής των SQL Saturday Nights. Ποιά ημέρα θα προτιμούσατε να γίνονται;

    Επειδή η γνώμη σας μετράει θα θέλαμε να απαντήσετε στην δημοσκόπηση που κάνουμε και την οποία θα βρείτε στο www.sqlschool.gr.

    Αν έχετε κάποια διαφορετική πρόταση από αυτές που η ψηφοφορία έχει θα θέλαμε να την ξέρουμε και αυτό μπορείτε να το κάνετε αφήνοντας το σχόλιο σας σε αυτό το post

    Σας ευχαριστούμε για την συνεργασία και το χρόνο σας.
  23. antonch
    Αρκετοί, ιδιαίτερα όσοι είναι μερακλήδες και κάνουν estimated capacity plan πριν δημιουργήσουν την βάση τους παραπονούνται ότι η δημιουργία μιας μεγάλης βάσης παίρνει αρκετό χρόνο.
    Το web cast αυτό δείχνει την λύση. Για να το δείτε πατήστε εδώ
    /*antonch*/
×
×
  • Create New...