άλλη μια ώρα χαμένη με τα τερτίπια του sql server

by

in

Οκ, ας το πιάσουμε από την καλή, είναι καλός, γρήγορος και αξιόπιστος, ο sql server αποτελεί αγαπημένο backend για τις εφαρμογές μας, όμως αν αποφασίσει να σκαλώσει σε πάει πίσω για ώρες και μέρες. Ένα παράξενο κόλλημα είχαμε και σήμερα που, πράγματι, δεν ανήκει στις πιο τυπικές περιπτώσεις, είναι όπως θα δείτε, μια αλληλουχία συμπτώσεων που οδηγούν στο ξεβράκωμα του sql, όμως, αυτό έλειπε, να κόλλαγε στις τυπικές περιπτώσεις!

Ας πάρουμε όμως τα πράγματα από την αρχή. Ήταν ένα ηλιόλουστο μεσημέρι και κάναμε debugging σε μια παλιά .net εφαρμογή που παρσάρει κάτι παράξενα αρχεία πάραντοξ (!), κάνει κάτι πράξεις και τέλος τα σπρώχνει σε μια database στον sql server που αναλαμβάνει τα περεταίρω. Κι ενώ όλοι θα στοιχημάτιζαν ότι κάτι θα στράβωνε μεταξύ paradox – bde – access – odbc ή κάποιας άλλης παλαιολιθικής οντότητας, το debugging ανέδειξε σφάλμα στο connectivity με τον sql server.

Τίποτα προφανές: κανένα δικτυακό πρόβλημα, τα συνθηματικά σωστά, ο server πάνω, τι στο καλό; Wtf; -επί το ελληνικότερο!

Συνδεόμαστε στον sql server και βρίσκουμε ότι όλες οι db που φιλοξενεί είναι κομπλέ, εκτός από την επίμαχη, που για κάποια σατανική αιτία, δεν ανοίγει. Corrupted? Να τρέξουμε νέο query; Σφάλμα! Report; Σφάλμα. dbcc checkb; Unavailable, είπαμε δεν έχει! Γιατί απλά δεν ανοίγει καν. Κανένα, σημάδι ζωής.

Ας δούμε τα σφάλματα προσεκτικά και με ψυχραιμία.

 

 

Insufficient memory? Disk space? Μα, το σερβεράκι, έχει μπόλικη μνήμη και δίσκο. Άσε που δεν εξυπηρετεί και τη μισή Ελλάδα… 2-3 χρήστες είναι πάνω του κι όχι τίποτα τζιμάνια, δυο ριπόρτ κοιτάνε όλα κι όλα.

Ας κάνουμε ένα σταρτ – στοπ, κανείς δεν θα το πάρει χαμπάρι.

Τίποτα, μια απ’τα ίδια.

Μα για δες, See SQL Server errorlog for details. Ποιος κοιτάει error logs τώρα; Αν δεν υπάρχει άλλη λύση όμως, ως και το μάνιουαλ θ’ ανοίξουμε, που λέει ο λόγος δηλαδή, πάντως είναι από αυτά που ούτε πως να τα γκουγκλάρεις δεν ξέρεις…

Λίγο από δω, λίγο από εκεί, σκάει η ιδέα, να δούμε που στο καλό βρίσκονται αυτά τα mdf και ldf που της έλαχαν της κακομοίρας database. Στη συνήθη διαδρομή, C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA, γιατί έτσι μας αρέσει, στην εγκατάσταση, next – next – next, να τ’αφήνουμε όλα default, είμαστε προγραμματιστές πάνω απ΄ όλα βλέπεις, και όχι παράξενοι sysadmin, να πειράζουμε τα διάφορα οψιόν και μετά να μη βρίσκουμε τίποτα;

Ο ένοχος!

Και τι πετύχαμε; Κάτι πολύ σημαντικό! Να δούμε ένα μπλε ελεκτρίκ, πάνω απ’τα δυο αυτά αρχειάκια, φως – φανάρι, ότι τα αρχεία είναι archived για να γλυτώσει ο παλιοάντμιν λίγο χώρο στο δίσκο! Ναι, αλλά από τα mdf πας να γλυτώσεις χώρο ρε μεγάλε?! Κι έτσι θα το γλυτώσεις; Πες μας να σου τρέξουμε ένα σρινκ!

Εδώ που τα λέμε, βλέποντας στο screenshot, συγκρίνοντας size on disk και size, δεν γλύτωσε και λίγο ο αρχηγός! Αλλά, έλα που μας έφαγε την ώρα!

 

Τώρα τα πράγματα είναι θέμα λίγων λεπτών…

Στοπ τον sql server για να μην τσινάει το ότι κάποιος χρησιμοποιεί το αρχείο!

Και στο mdf και στο ldf λοιπόν, δεξί κλικ, advanced και uncheck save disk space.

Να και το screenshot με το ένοχο σημαιάκι!

Θα πάρει λίγη ώρα ανάλογα με το μέγεθος του αρχείου, όταν με το καλό τελειώσει, σταρτ τον sql server και voila.  Η database μας είναι up and running!

 


Comments

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *