|
dotNETZone.gr Weblogs
-
Αναμφίβολα όλοι γνωρίζουμε την αξία που έχουν οι indexes σε ένα πίνακα και την ευεργετική επίδραση τους στα queries που γίνονται σε αυτούς.Επίσης όλοι ξέρουν ότι το index fragmentation είναι ένας παράγοντας που έχει αρνητική επίδραση στην αξία των index όμως γνωρίζουν όλοι τι είναι internal και τι external fragmentation; http://www.sqlschool.gr/blog/external-and-internal-index-fragmentation-930.aspx...
|
-
One of the first things you may find yourself wondering about when creating an Azure SQL database is how to have ASPNETDB installed in. If you try to use aspnet_regsql you will be frustrated by the error: Setup failed . Exception : An error occurred during the execution of the SQL file 'InstallCommon.sql' . The SQL error number is 40508 and the SqlException message is : USE statement is not supported to switch between databases . Use a new connection to connect to a different Database . which means SQL Azure simply does not support the USE statement , really. Fortunately, Microsoft has created a hotfix to work around this problem. Download and extract the contents of aspnet_regsqlazure.zip then open a command prompt and navigate to the folder where you extracted the files. Enter the following command to have the job done: aspnet_regsqlazure - s [ your server name ]. database . windows . net - d [ your database name ] - u [ your user name ]@[ your server name ] - p [ your password ] - a mr...
|
-
In my previous post I wrote about using Linq-to-Sql and the Repository pattern. Typically, this means the dbml file is located in a repository project, which is a separate library project. In other words, the dbml files does not have direct access to the web.config connection strings of your web (presentation) project. The dbml designer is configured using the app.config settings, instead. On the other hand, the web.config debug/release build mechanism is too handy to ignore when it comes to connection strings. So, can the dbml be programmatically configured to use the appropriate web.config's connection string and if yes, how? The answer lies in the connection string passed as a parameter to the DataContext constructor thus overriding the dbml designer's property. This becomes even easier when using the Repository pattern since there is a single point of construction: the Repository class constructor. The following code snipet demonstrates the solution discussed. Please note, that the presented abstract Repository...
|
-
Όλο και περισσότερες είναι πλέον οι πηγές που περιέχουν δεδομένα. Αυτό σημαίνει ότι όλο και περισσότερο υπάρχει η ανάγκη συγκερασμού αυτών ώστε να βγει μια πληροφορία τέτοια που να οδηγεί σε μια απόφαση. Σε αυτή την διαδικασία δεν υπάρχει τίποτα καλύτερο από τα Integration Services. Σε αυτό SQL Saturday Night θα ξεκινήσουμε την περιήγηση μας σε αυτά για όσους είτε δεν έχουν ασχοληθεί καθόλου μαζί τους είτε έχουν ελάχιστη επαφή με αυτά. Ημερομηνία διεξαγωγής 25/05/2013 και ώρα 22:00 από το σπίτι σας και τον υπολογιστή σας! http://www.sqlschool.gr/SqlSaturdayNight/20/Content.aspx...
|
-
Στην καθημερινότητα μας όλοι ερχόμαστε, κάποια στιγμή, αντιμέτωποι με προβλήματα που αφορούν την απόδοση του SQL Server. Έχω δεχθεί κατά καιρούς ερωτήματα από πολλούς που αφορούσαν τέτοια θέματα. Μέχρι σήμερα, αν και το έχω αναφέρει αρκετές φορές, δεν είχα γράψει κάτι σχετικά με το πως θα φτάσουμε στην αιτία που μας δημιουργεί το εκάστοτε πρόβλημα απόδοσης, πότε όμως δεν είναι αργά. περισσότερα...
|
-
Αν και δεν είναι κάτι το συνηθισμένο εντούτοις κάποια στιγμή θα σας έχει έρθει ή θα σας έρθει η ανάγκη για κάτι σαν αυτό που θα σας δώσω σαν tip στο συγκεκριμένο post. Έχω ένα πίνακα που έχει Ν πλήθος εγγραφών και θέλω σε ένα πεδίο του να πάρω όλες τις τιμές του από αυτές τις εγγραφές και να τις έχω σαν ένα πεδίο. Με άλλα λόγια θέλω να κάνω string concatenate more...
|
-
Όταν γράφω ένα post ευελπιστώ να διαβαστεί αρκετές φορές και συνήθως έτσι γίνεται και είναι ένα μέρος της προσωπικής ικανοποίησης που νιώθω. Αν όμως αυτό έχει κάνει κάποιον να προβληματιστεί και να έχει απορίες πάνω σε αυτό και μου τις στείλει μου αρέσει ακόμα περισσότερο. Στο προηγούμενο μου post μίλησα για το πως μπορούμε να καθαρίζουμε τα log entries από τα job executions που έχουμε δημιουργήσει με σκοπό να κρατάμε μόνο αυτά για το χρονικό διάστημα που επιθυμούμε. Ένα φίλος λοιπόν πήγε να εφαρμόσει τα λεγόμενα του post σε SQL Server 2000 και όπως είναι φυσικό δεν μπορούσε να το κάνει καθώς η συγκεκριμένη διαδικασία δεν υπήρχε στο SQL Server 2000. more...
|
-
Μέσα στην καθημερινότητα ενός DBA είναι να έχει αρκετά schedule tasks με τα οποία κάνει την ζωή του ευκολότερη. Αυτά όπως είναι γνωστό εκτελούνται με την χρήση του SQL Server Agent service. Τα tasks αυτά σε κάθε κύκλο εκτέλεσης τους κάνουν logging την κάθε εκτέλεση σε ένα system table που υπάρχει μέσα στην msdb database και αυτός είναι ο dbo.sysjobhistory. Φυσικό είναι ο πίνακας αυτός να γεμίζει με εγγραφές που έπειτα από κάποιο χρονικό διάστημα πρακτικά είναι άχρηστες καθώς αναφέρονται σε εκτελέσεις που αφορούν το πολύ μακρινό παρελθόν. Πως λοιπόν θα σβήσουμε από αυτόν τον πίνακα τις εγγραφές αυτές που δεν θέλουμε; more...
|
-
Μπορείτε να διαβάζετε πλέον τις περιπέτειες του Ζαχαρία στη διεύθυνση www.triakilakodika.gr (ψιτ, έχει και καινούριο επεισόδιο)....
|
-
Για διάφορους λόγους και διάφορες αιτίες όλα τα accounts που είχες και μπορούσες να μπεις σε ένα SQL Server instance σαν sysadmin είτε είναι κλειδωμένα είτε έχεις ξεχάσει τα paswords και πρέπει να κάνεις δουλειά τότε τι κάνεις; more...
|
-
Ένα από τα θέματα που σε κάποιες περιπτώσεις μας έχει ταλαιπωρήσει ιδιαίτερα αν δεν το γνωρίζουμε είναι το parameter sniffing. Έχω κατά καιρούς διαβάσει και δει διάφορες προτάσεις για την αντιμετώπιση του. Επειδή όμως δεν ήθελα απλά να το περιγράψω σε ένα ίσως μακροσκελές κείμενο αποφάσισα να το κάνω ένα web cast που ζωντανά δείχνω όλο το θέμα χωρίς slides αλλά με παραδείγματα. Enjoy it. http://www.sqlschool.gr/blog/parameter-sniffing-–-what-is-and-how-to-deal-with-it-921.aspx...
|
-
Σαν DBA στην καθημερινότητα μου θέλω να μπορώ εύκολα να βλέπω τι γίνεται με τους SQL Servers που έχω υπό την επίβλεψη μου. Για αυτό το λόγο έχω φτιάξει κάποια σειρά από scripts και reports που τα χρησιμοποιώ για να κάνω την ζωή μου ευκολότερη. Αυτό βέβαια σημαίνει ότι γνωρίζω το πως θα κατασκευάσω αυτά. Τι γίνεται όμως στις περιπτώσεις που κάποιος είτε είναι αυτό που λέμε accidentally DBA είτε είναι νέος στο ρόλο αυτό με τον SQL Server είτε ακόμα ακόμα δεν έχει το χρόνο να κάνει κάτι αντίστοιχο. Για αυτούς το product group έχει κατασκευάσει κάποια έτοιμα reports που εύκολα ο καθένας μπορεί να εκτελέσει και να πάρει άμεσα πληροφορίες. Αυτά είναι τα reports που είναι build-in με την εγκατάσταση του προϊόντος. Ακόμα όμως και από αυτά θέλουμε περισσότερες και ποιο ουσιώδης πληροφορίες και για αυτό το product group έχει φτιάξει μια σειρά από reports τα οποία ονομάζει SQL Server 2012 Performance Dashboard Reports το οποία μπορεί ο κάθε ενδιαφερόμενος να τα κατεβάσει από το link ... more...
|
-
Ένα απλό παράδειγμα για το πως μπορώ να έχω nested CTEs http://www.sqlschool.gr/blog/nested-cte-–-a-simple-sample-919.aspx...
|
-
Πριν από μερικούς μήνες σας είχα αναφέρει την DBCC OPTIMIZER_WHATIF, ένα undocumented dbcc statement. Στο post εκείνο είχα προσπαθήσει να βρω πολλά πράγματα για την συγκεκριμένη αλλά όπως συμβαίνει πάντα όταν κάτι είναι undocumented δεν μπορείς να βρεις πολλά τουλάχιστον στην αρχή.Σε αυτό όμως κάνω την αποκάλυψη της more...
|
-
Για όλους εμάς που είμαστε data geeks και οι databases είναι τρόπος έκφρασης και ζωής αλλά και κάτι που όλοι χρησιμοποιούν είτε τους αρέσει είτε όχι έχουμε βασανιστεί πάμπολες φορές για το πώς να μεταφέρουμε αλλαγές από το development στο production αλλά και γενικότερα να έχουμε ένα db lifecycle management. more...
|
-
To Cumulative Update 2 του Service Pack 1 του SQL Server 2012 περιέχει αρκετές ευχάριστες εκπλήξεις. Ήδη σας έχω αναφέρει κάποιες και θα συνεχίσω και σε αυτό το post με ακόμα μία που έχει πιστεύω μεγάλη αξία ειδικά σε αυτούς που είναι φίλοι του virtualization. more...
|
-
Αν πριν μερικά χρόνια κάποιος ήθελε να παίρνει backup την βάση του σε share network drive ίσως να τον λέγατε παρανοϊκό αλλά παρόλα αυτά μπορούσε εύκολα να γίνει. Αν όμως κάποιος σας έλεγε ότι ήθελε κάτι αντίστοιχο να γίνει σε κάποιο άλλο share αλλά σε άλλον γεωγραφικό τόπο εκεί τα πράγματα να γίνονταν λίγο δυσκολότερα. Αν τώρα κάποιος σας έλεγε ότι μπορεί πλέον να έχει παίρνεις backup αλλά και να κάνει restore στο cloud; more...
|
-
TPC-VMS is the first specification in the industry that enables comparison of performance workloads running enterprise database applications across several virtual machines, TPC-VMS references current TPC specifications and, as a result, offers the industry a rapid means of running and reporting performance metrics for virtualized environments more...
|
-
Εκτός και αν πρόκειται για sample, prototype ή throw-away project τότε η αρχιτεκτονική μιας ASP.NET εφαρμογής είναι αυτή που φαίνεται στο παρακάτω σχήμα. Τα επίπεδα (layers) μπορούν να διαμορφωθούν ανάλογα με το μέγεθος της εφαρμογής. Για παράδειγμα, πιθανόν να υπάρχει χωριστό presentation layer (ανάμεσα στα Services και το UI) αρκεί η σχεδίαση να μην αποτελεί overkill για την κλίματα του έργου. Τα παραπάνω ακούγονται πολύ ωραία και ταιριάζουν με τις επιταγές της DDD μεθοδολογίας αλλά τι γίνεται όταν για το persistence επιλέγεται η LINQ-to-SQL; Στην συγκεκριμένη περίπτωση όχι μόνο έχουμε ένα ORM που λειτουργεί ως Repository αλλά γεννάται το ερώτημα αν πρέπει να εκμεταλλευτούμε το Object Model που παράγεται αυτόματα. Φαίνεται πως οι partial classes μπορούν να λειτουργήσουν και ως Domain Model. Για παράδειγμα, αν στο DataContext έχουμε το Customer entity, η εφαρμογή business logic κανόνων μπορεί να γίνει γράφοντας: 1: public partial class Customer 2: { 3: partial void OnValidate(ChangeAction action) 4: { 5: if (action...
|
-
A nice change I noticed today is that VMDepot images are now visible in the Windows Azure Portal. If you to Virtual Machines You’ll see an option that says “Browse VMDepot” If you click it, you get the list of the image already in the VM Depot: You can select one and create a virtual [...]...
|
-
Έχει μαλλιάσει η γλώσσα μου χρόνια τώρα να λέω ότι στον SQL Server δεν υπάρχουν θέσφατα, αξιώματα και κανόνες. Υπάρχουν συνθήκες και με βάση αυτές και την γνώση της αρχιτεκτονικής του SQL Server (και για αυτό έχει μαλλιάσει η γλώσσα μου) μπορείς να δώσεις απαντήσεις και λύσεις σε ότι και να σου συμβεί. more...
|
-
Με το LINQPad μπορείτε να συνδεθείτε στη βάση δεδομένων, να εκτελέσετε LINQ queries γράφοντας τα σε lambda ή query syntax, να δείτε τα αντίστοιχα SQL statements και φυσικά τα αποτελέσματά τους. Για παράδειγμα, το παρακάτω query φέρνει το πελατολόγιό μας με σειρά συχνότητας επισκέψεων (ο πιο συχνός πελάτης εμφανίζεται πρώτος) και κατόπιν αλφαβητική. Ως πελάτης θεωρείται οποιοσδήποτε μας έχει επισκεφτεί τουλάχιστον μια φορά. 1: from c in Customers 2: where c.Visits.Any(v => v.vid == 2) 3: orderby c.Visits.Count descending, c.lastname, c.firstname 4: select c Στο LINQPad δεν υπάρχει “DataContext”. Customers είναι το όνομα του πίνακα της βάσης με την οποία έχουμε συνδεθεί. Μετά την εκτέλεση του query, το LINQPad μας παρουσιάζει τα αποτελέσματα: Το αντίστοιχο lambda syntax: και το παραγόμενο SQL: Εκτός από LINQ queries, στο LINQPad μπορείτε επίσης να εκτελέσετε οποιαδήποτε C#/VB έκφραση, εντολή ή πρόγραμμα καθώς και να δοκιμάσετε regular expressions (τα matches εμφανίζονται στο Results tab)....
|
-
Καθημερινά με ρωτάνε διάφορα για τον SQL Server. Kάποια είναι επαναλαμβανόμενα συχνότερα, κάποια άλλα όχι ή διατυπωμένα διαφορετικά, δεν έχει σημασία. Σήμερα όμως μου έκαναν μια ερώτηση που για περίεργο λόγο δεν με είχε ρωτήσει κανείς μέχρι τώρα. Η ερώτηση αυτή αφορούσε τα διάφορα updates που έχει ο SQL Server την συχνότητα αυτών αλλά και τι είναι το κάθε ένα από αυτά. more...
|
-
Κλασικό σφάλμα όταν προσπαθούμε να υλοποιήσουμε database mirroring χωρίς οι εμπλεκόμενοι SQL servers να είναι σε domain και τα services τους να ξεκινάνε με domain account καθώς θα πρέπει να γίνει δημιουργία του database mirroring με την χρήση certificates. more...
|
-
Μιας και η χρονιά ξεκίνησε με παρουσίαση βιβλίου , ενας πολύ καλός οδηγός τσέπης είναι το LINQ Pocket Reference (εκδόσεις O'Reilly). Ιδιαίτερο ενδιαφέρον έχει το πρώτο μέρος του οδηγού που εξηγεί βασικές έννοιες όπως το deferred execution, iterator chaining και lamda expressions type inference. Πολύ ακριβής και η αναφορά στις διαφορές ανάμεσα στα local και interpreted queries καθώς, στα subqueries και φυσικά στη LINQ to SQL. Ο υπόλοιπος οδηγός παρουσιάζει τους query operators ομαδοποιημένους ανάλογα με την λειτουργία τους (filtering, projecting, ordering κοκ). Για κάθε operator δίνεται τόσο το lamdba όσο και το query syntax. Είναι γνωστό στη κοινότητα οτι όσο μεγάλη ευκολία και εξοικονόμηση χρόνου παρέχει η LINQ άλλο τόσο εύκολη είναι η δημιουργία σπάταλων, μη αποδοτικών queries που μεταφράζονται σε τερατώδη SQL statements. Πιστεύω πως η ανάγνωση του πρώτου μέρους του οδηγού αντιμετωπίζει αποτελεσματικά ακριβώς αυτό το πρόβλημα. Τέλος, ο οδηγός "συνοδεύεται" από το LINQPad , ένα δωρεάν εργαλείο με το οποίο μπορούμε...
|
|
|
|