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?
la source
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.
la source