Προς το περιεχόμενο

SQL Server connection timed out


Uberalles_gr

Προτεινόμενες αναρτήσεις

Δημοσ.

Αυτό συμβαίνει σε όλα τα query ή σε συγκεκριμένα (π.χ. σε όσα επιστρέφουν πολλά tuples) ;

 

Αν συμβαίνει σε όλα βεβαιώσου ότι ο sql server σου "τρέχει" και ότι είναι ρυθμισμένος να "ακούει" στην σωστή IP... Αν παίζεις τοπικά, localhost.

 

Αν αυτά είναι οκ δοκίμασε να αυξήσεις τον χρόνο για query time out στον server.. ίσως ο default χρόνος να του έπεσε λίγος

Δημοσ.

Ευχαριστώ για την απάντηση earthworm.

 

Μόνο στο συγκεκριμένο query έχω πρόβλημα.

 

Πως μπορώ να αυξήσω τον χρόνο για query time out στον server?

Δημοσ.

Μάλλον το 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/

Δημοσ.

Βασικά μου βγάζει το παρακάτω 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.

Δημοσ.

Υπάρχουν 2 πιθανές αιτίες:

1) Δεν υπάρχει δυνατότητα σύνδεσης με τον sql server

2) Το query αργεί πολύ, είτε λόγω πολλών δεδομένων είτε λόγω περιπλοκότητας.

 

Συνήθως το πρόβλημα είναι το (1). Δοκίμασε να τρέξεις ένα απλό query, παράδειγμα SELECT somefield FROM ToTableSou WHERRE ID=1

Αν δεν υπάρχει το ID 1 βάλε κάποιο ID που ξέρεις ότι υπάρχει.

 

Αν σου εμφανίσει και σε αυτό το απλό query το πρόβλημα, πρέπει να ρυθμίσεις τον server ώστε να μπορεί να συνδεθεί η εφαρμογή σου.

Δημοσ.

Έχω αναφέρει πιο πάνω ότι συνδέομαι κανονικά στην βάση και εκτελώ κανονικά τα 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);

Δημοσ.

Λάθος μου, δεν το πρόσεξα.

 

Απ' ό,τι διαβάζω, ο 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.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...