2009-02-04 5 views
9

J'ai un script SQL simple que j'exécute manuellement à partir de Visual Studio. C'est un script de génération de données, donc je m'attends à ce que ça prenne quelques minutes pour fonctionner. Mais j'ai l'erreur suivante.Comment puis-je modifier le délai d'expiration d'une requête exécutée manuellement dans SQL Server?

Le délai d'attente a expiré. La période de temporisation s'est écoulée avant la fin de l'opération ou le serveur n'est pas répondant.

Je ne souhaite pas modifier les paramètres globaux du serveur pour pouvoir exécuter ce fichier. Y a-t-il des commandes que je pourrais mettre en haut du fichier pour augmenter le timeout de ce script/transaction?

+0

Le script fait-il partie d'un projet de base de données? –

+0

Le script ne fait pas partie du projet DB. – tpower

Répondre

0

Peu importe, je peux le faire fonctionner correctement avec SQL Management Studio. SQL Server attendra indéfiniment avant de retourner à l'utilisateur.

12

Si vous utilisez SQL Management Studio, il y a deux paramètres dans les options (je fais référence à Management Studio de SQL Server 2005, que je l'utilise):
(mon Management Studio est en allemand, donc je l'espère Je traduisais les noms correctement en anglais)

vous pouvez trouver à la fois dans le menu « Extras » -> « options »

dans les options, le premier est sous « exécution de la requête », vous pouvez mettre le "délai d'exécution" là (le mien était déjà sur zéro)

Le second (et je pense que c'est ce dont vous avez besoin) est la première option sous "Designer", il dit quelque chose comme "Override Timeout pour les mises à jour de concepteur de table". Vous pouvez cocher une case.
Il y a quelque temps, j'ai eu un problème similaire au vôtre (message de délai d'attente lors de l'exécution de ALTER TABLE sur une grande table), et je l'ai résolu en mettant cette option à une valeur plus élevée.

+3

+1 Bonne information et facile à suivre J'avais juste le même problème et cela l'a résolu. Bonne traduction aussi, juste une chose dans la version anglaise c'est "Outils" -> "Options". – 182764125216

+0

Cela n'a pas fonctionné pour moi. J'ai fourni ma propre réponse. –

4

L'augmentation de la propriété CommandTimeout se résout le problème à savoir

SqlCommandObject.CommandTimeout = 500000

1

réponse @christian ne fonctionne pas pour moi (changer les paramètres dans SQL Management Studio).

La réponse de Biswa a fonctionné pour moi. Je vais inclure le code à clarifier

SqlCommand cmd = new SqlCommand("MyReport", conn); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandTimeout = 60; /* note default is 30 sec */ 
4

Augmentez les valeurs de délai d'attente de requête et de délai de connexion dans Visual Studio en utilisant les procédures documentées ci-dessous. Modification de la requête Délai d'attente:

Dans IDE Visual Studio, accédez à Outils -> Options -> Outils de base de données -> requêtes et de vues Concepteurs Vous pouvez décocher l'option Annuler requête d'exécution longue ou modifier la valeur de Annuler après l'option à une valeur plus élevée. Modification du délai de connexion:

Dans IDE Visual Studio, activez l'Explorateur de serveurs en accédant à Voir -> Explorateur de serveurs Dans l'Explorateur de serveur, faites un clic droit sur la connexion à SQL Server où les objets CLR sont déployés et choisissez Modifier Connexion. Cliquez sur le bouton Avancé dans la fenêtre Modifier la connexion. Dans la fenêtre Propriétés avancées, modifiez la valeur Connect Timeout sous la section Initialization à une valeur plus élevée.

http://support.microsoft.com/kb/2011805

0

Je voulais juste préciser des mesures spécifiques pour Microsoft SQL Server Management Studio 2005 ... par défaut « Designer » doivent certainement être ajustées, même si elle est définie à la section « 0 » « exécution de la requête » comme Les variables 'Designer' remplacent les paramètres 'Query Execution'.

  1. Ouvrez Microsoft SQL Server Management Studio 2005
  2. Outils >> Options
  3. Expand Designers ''
  4. que j'ai trouvé paramètre 'time-out Transaction après' 120 a bien fonctionné pour les mises à jour à tables avec plusieurs millions d'enregistrements.
Questions connexes