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

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

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

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

Συνεχίστε την ανάγνωση του «άλλη μια ώρα χαμένη με τα τερτίπια του sql server»

sql server, εύρεση του foreign βάσει του primary key

sql server logo

Οκ, αυτό το άρθρο θα είναι σύντομο, καθώς πρόκειται για αντιγραφή από το stackoverflow, αλλά το δίνουμε κι εδώ για reference, χρήσιμο στους χρήστες τους Sql Server που παλεύουν με άγνωστο σχήμα προσπαθώντας να εντοπίσουν τις σχέσεις των πινάκων. Ακολουθεί ένας πολύ κομψός τρόπος.


SELECT
o1.name AS FK_table,
c1.name AS FK_column,
fk.name AS FK_name,
o2.name AS PK_table,
c2.name AS PK_column,
pk.name AS PK_name,
fk.delete_referential_action_desc AS Delete_Action,
fk.update_referential_action_desc AS Update_Action
FROM sys.objects o1
INNER JOIN sys.foreign_keys fk
ON o1.object_id = fk.parent_object_id
INNER JOIN sys.foreign_key_columns fkc
ON fk.object_id = fkc.constraint_object_id
INNER JOIN sys.columns c1
ON fkc.parent_object_id = c1.object_id
AND fkc.parent_column_id = c1.column_id
INNER JOIN sys.columns c2
ON fkc.referenced_object_id = c2.object_id
AND fkc.referenced_column_id = c2.column_id
INNER JOIN sys.objects o2
ON fk.referenced_object_id = o2.object_id
INNER JOIN sys.key_constraints pk
ON fk.referenced_object_id = pk.parent_object_id
AND fk.key_index_id = pk.unique_index_id
ORDER BY o1.name, o2.name, fkc.constraint_column_id

sql server express

sql server logo

Αν η εφαρμογή σας δεν έχει ανάγκη από clustering, replication, analysis & reporting services και άλλα κόλπα που δίνουν τα μεγάλα αδέλφια της οικογένειας του sql server, τότε ο sql server express αποτελεί μια αξιόπιστη λύση που δεν θα σας προδώσει, όσο οι απαιτήσεις της εφαρμογής παραμένουν χαμηλά.

Για την ιστορία, οφείλουμε να πούμε ότι από έκδοση σε έκδοση του express η Microsoft επιτρέπει όλο και μεγαλύτερες ΒΔ: ο sql server express 2005 διαχειριζόταν μέγιστο μέγεθος ΒΔ 4 GB, ενώ ο 2014 επιτρέπει έως 10 GB. Δυστυχώς αυτό δεν ισχύει για CPU και RAM, 10 χρόνια μετά, η μέγιστη αξιοποίηση της RAM παραμένει στο 1 GB.

Περισσότερα για τους περιορισμούς του express ως προς τα features και την αξιοποίηση των πόρων του συστήματος εδώ.

 

sql server + ημερομηνίες

sql server logo

Τα ημερολογιακά φίλτρα είναι σημαντικά σε όλες τις γλώσσες προγραμματισμού, αλλά πολλές φορές «σπάμε το κεφάλι μας» για το πως θα βρούμε την πρώτη Δευτέρα του τρέχοντος μήνα, για το πως θα ζητήσουμε την περίοδο των τελευταίων 40 ημερών κοκ. Αν και η λογική είναι παρόμοια σχεδόν σε όλες τις γλώσσες, η καθεμία έχει την ιδιαιτερότητα που μας κάνει να ξεχνάμε την ακριβή σύνταξη. Και επειδή χρησιμοποιούμε τον sql server συχνά σαν db engine για τα δεδομένα μας, ας δούμε μερικές χρήσιμες συναρτήσεις που βοηθούν στον προσδιορισμό των περιόδων.

Συνεχίστε την ανάγνωση του «sql server + ημερομηνίες»