Uberalles_gr Δημοσ. 8 Δεκεμβρίου 2009 Δημοσ. 8 Δεκεμβρίου 2009 Εκτελώ ένα query μέσω της php σε SQL SERVER 2005 και μου βγάζει error "SQL Server connection timed out". Τι μπορώ να κάνω παιδιά?
earthworm Δημοσ. 9 Δεκεμβρίου 2009 Δημοσ. 9 Δεκεμβρίου 2009 Αυτό συμβαίνει σε όλα τα query ή σε συγκεκριμένα (π.χ. σε όσα επιστρέφουν πολλά tuples) ; Αν συμβαίνει σε όλα βεβαιώσου ότι ο sql server σου "τρέχει" και ότι είναι ρυθμισμένος να "ακούει" στην σωστή IP... Αν παίζεις τοπικά, localhost. Αν αυτά είναι οκ δοκίμασε να αυξήσεις τον χρόνο για query time out στον server.. ίσως ο default χρόνος να του έπεσε λίγος
Uberalles_gr Δημοσ. 9 Δεκεμβρίου 2009 Μέλος Δημοσ. 9 Δεκεμβρίου 2009 Ευχαριστώ για την απάντηση earthworm. Μόνο στο συγκεκριμένο query έχω πρόβλημα. Πως μπορώ να αυξήσω τον χρόνο για query time out στον server?
Maniakos Δημοσ. 11 Δεκεμβρίου 2009 Δημοσ. 11 Δεκεμβρίου 2009 Μάλλον το query σου θέλει να το ξαναγράψεις καλύτερα. Πόσα rows έχει η database; Πόσα tables γίνονται join στο query; Ο SQL Server καταγράφει όσα queries είναι αργά. Μπορείς να δεις αυτά τα άρθρα για να δεις πως γίνεται: http://technet.microsoft.com/en-us/library/cc917676.aspx http://blog.brianhartsock.com/2008/12/16/quick-and-dirty-sql-server-slow-query-log/
Uberalles_gr Δημοσ. 14 Δεκεμβρίου 2009 Μέλος Δημοσ. 14 Δεκεμβρίου 2009 Βασικά μου βγάζει το παρακάτω error "Array ( [0] => HY000 [1] => 10024 [2] => SQL Server connection timed out. [10024] (severity 6) ......." Έψαξα και είδα ότι το 10024 error για την mssql έχει σχέση με Explanation This error message is returned from DB-Library when the query time-out setting for the application's connection to Microsoft SQL Server is too low. The query is terminated when it takes longer to complete than the time allocated.
StavrosD Δημοσ. 14 Δεκεμβρίου 2009 Δημοσ. 14 Δεκεμβρίου 2009 Υπάρχουν 2 πιθανές αιτίες: 1) Δεν υπάρχει δυνατότητα σύνδεσης με τον sql server 2) Το query αργεί πολύ, είτε λόγω πολλών δεδομένων είτε λόγω περιπλοκότητας. Συνήθως το πρόβλημα είναι το (1). Δοκίμασε να τρέξεις ένα απλό query, παράδειγμα SELECT somefield FROM ToTableSou WHERRE ID=1 Αν δεν υπάρχει το ID 1 βάλε κάποιο ID που ξέρεις ότι υπάρχει. Αν σου εμφανίσει και σε αυτό το απλό query το πρόβλημα, πρέπει να ρυθμίσεις τον server ώστε να μπορεί να συνδεθεί η εφαρμογή σου.
Uberalles_gr Δημοσ. 14 Δεκεμβρίου 2009 Μέλος Δημοσ. 14 Δεκεμβρίου 2009 Έχω αναφέρει πιο πάνω ότι συνδέομαι κανονικά στην βάση και εκτελώ κανονικά τα queries. Στο συγκεκριμένο είναι το πρόβλημα.. Υ.Γ. έτσι εκτελώ το query > // attempt a connection try { $pdo = new PDO("mssql:host=$hostname,1433;dbname=$dbname;",$username,$password); } catch (PDOException $e) { die("ERROR: Could not connect: " . $e->getMessage()); } // create and execute SELECT query $sql = "QUERY"; if ($result = $pdo->query($sql)) { while($row = $result->fetch()) { echo $row[0] . ":" . $row[1] . "\n"; } } else { echo "ERROR: Could not execute the query. " . print_r($pdo->errorInfo()); } // close connection unset($pdo);
nske Δημοσ. 14 Δεκεμβρίου 2009 Δημοσ. 14 Δεκεμβρίου 2009 Δες την dbsettime() -αν και υποτίθεται ότι by default δεν υπάρχει περιορισμός. http://technet.microsoft.com/en-us/library/aa937068%28SQL.80%29.aspx
Uberalles_gr Δημοσ. 14 Δεκεμβρίου 2009 Μέλος Δημοσ. 14 Δεκεμβρίου 2009 Την έχω δει την συγκεκριμένη συνάρτηση που δυστυχώς είναι για C και δεν με βοηθάει
nske Δημοσ. 14 Δεκεμβρίου 2009 Δημοσ. 14 Δεκεμβρίου 2009 Λάθος μου, δεν το πρόσεξα. Απ' ό,τι διαβάζω, ο PDO_DBLIB της PHP μπορεί να μιλήσει με έναν MSSQL server με 3 τρόπους: - Μέσω της FreeTDS library - Μέσω ODBC driver στα Windows - Μέσω της native db-lib στα Windows Δε ξέρω αν έχει σχέση αυτό, πάντως το manual της PHP συνιστά να αποφεύγεται ο τρίτος τρόπος επειδή είναι παρατημένος. http://www.php.net/manual/en/ref.pdo-dblib.php Η FreeTDS υποτίθεται ότι υλοποιεί την dbsettime(), αλλά δε ξέρω τι έλεγχος υπάρχει μέσω της PHP. Ίσως οι παράμετροι timeout και connect timeout του freetds.conf έχουν σχέση. Από το documentation της microsoft πάντως εγώ καταλαβαίνω ότι το error είναι client-side και όχι server side (δηλαδή δε σε κάνει disconnect ο MSSQL server λόγω κάποιων δικών του restrictions). Error 10024 (DB-Library) Severity Level 6 Message Text SQL Server connection timed out. Explanation This error message is returned from DB-Library when the query time-out setting for the application's connection to Microsoft SQL Server is too low. The query is terminated when it takes longer to complete than the time allocated. Action Check the application for configuration settings, and increase the query time-out setting. If this is a custom application, you can adjust the query time-out setting by using the dbsettime() function). Κάτι άλλο που μπορείς να κοιτάξεις είναι μήπως έχει κάποια σχειτκά settings στο php.ini σου. Προσωπικά πάντως θα προτιμούσα την freetds, για να είμαι και platform independent.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.