Table d'économie de délai d'attente dans SQL Server


16

J'essaie d'ajouter une colonne à une table avec beaucoup de données dans SQL Server 2005, en utilisant SSMS.

Je parcoure donc le tableau, sélectionne Modifier et ajoute la nouvelle colonne. Ensuite, lorsque j'appuie sur Enregistrer, j'obtiens l'avertissement suivant:

Enregistrement de la définition Les modifications apportées aux tables contenant de grandes quantités de données peuvent prendre un temps considérable. Pendant l'enregistrement des modifications, les données de la table ne seront pas accessibles

Je suis d'accord avec ça, la base de données est hors ligne et j'ai tout le temps du monde, alors j'appuie sur Oui.

Cependant, l'opération expire ensuite après environ 30 secondes avec ce message:

Impossible de modifier la table. Le délai a expiré. Le délai d'expiration s'est écoulé avant la fin de l'opération ou le serveur ne répond pas.

Ensuite, lorsque j'appuie sur OK:

L'utilisateur a annulé la boîte de dialogue d'enregistrement (MS Visual Database Tools)

Je comprends pas. J'ai défini le délai d'exécution sur 0 (infini) à la fois dans la boîte de dialogue de connexion SSMS et sous Outils -> Options -> Exécution de la requête -> SQL Server. Quel est l'intérêt de définir un délai d'exécution s'il est simplement ignoré?

Quelqu'un sait-il quelle valeur de délai d'attente est utilisée ici et comment la définir?

Réponses:


27

Cela ressemble à un paramètre de temporisation. Votre SSMS pense donc que cela prend trop de temps et annule la connexion pour vous. Les rôles de serveur SQL sont de retour. Mais il y a de l'aide. Vous n'êtes pas la première personne à rencontrer cela.

Voyez ici .

Pour tous ceux qui ne veulent pas cliquer sur le lien. Voici la réponse gagnante:

Après avoir rencontré la même erreur, je suis tombé sur le réglage correct.

Dans Management Studio, dans le menu Outils, sélectionnez Options, puis cliquez sur "Concepteurs". Il existe une option appelée "Remplacer la valeur de délai d'expiration de la chaîne de connexion pour les mises à jour du concepteur de table:" Dans la zone "Délai d'expiration de la transaction après:", vous verrez la magie 30 secondes


6

// FAITES CE QUI SUIT:

Ouvrez SQL Server Management Studio -> Menu Outils -> Options -> Onglet Concepteurs -> Concepteur de tables et de bases de données -> Augmentez le délai d'expiration de 30 secondes à 65 535 secondes .--> OK

// Vous pouvez maintenant enregistrer vos modifications de table. // J'espère que cela vous aide et consultez mon blog @: //www.ogolla.blogspot.com


1
Wow, c'est un énorme délai d'attente de plus de 18 heures. Il est temps de faire une sieste!
Peter Schuetze

0

SSMS ne doit pas être utilisé pour des modifications générales des données. Mettez-vous à l'aise avec T-SQL et ajoutez la colonne comme suggéré ci-dessous.

ALTER TABLE TableName ADD NewColumn INT

SSMS crée en fait une nouvelle table avec toutes les colonnes, importe des données dans la nouvelle table et supprime l'ancienne table. Même si vous avez tout le temps du monde, s'il existe un moyen efficace de faire les choses, vous devez utiliser la bonne méthode. Pour éviter ce gâchis, dans SQL Server 2008 ne permettra pas la méthode GUI IIRC.


3
Je vois ce que tu veux dire. Mais je préfère avoir mes colonnes dans un ordre spécifique. Idiot, vous pourriez penser, mais vous l'avez. En utilisant ALTER TABLE, la nouvelle colonne est ajoutée à la fin. Je suppose que c'est pourquoi SSMS doit supprimer et recréer la table, en fait.
Tor Haugen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.