SQL Server 2008 : Impossible d'Insérer une nouvelle colonne dans la position du milieu et de modifier le type de données
Mon OS est Windows server 2008.
Je l'ai déjà installé SQL Server Express 2008.
J'ai plusieurs problèmes:
- Je ne peux pas insérer une nouvelle colonne dans la position du milieu. Si je l'insérer dans le dernier, je peux enregistrer la conception de la table.
- Je peux changer le nom de la colonne, mais je ne peux pas changer le type de données.
J'ai eu un message d'erreur :
Enregistrer les modifications ne sont pas autorisées. Les modifications que vous avez effectuées nécessitent les tableaux suivants pour être supprimé et recréé. Vous avez apporté des modifications à une table qui ne peuvent pas être recréés ou activé l'option Empêcher l'enregistrement des modifications qui exigent la table pour être re-créé.
Exemple:
J'ai ID, Name, Phone,
et Status
colonnes. Je suis incapable d'ajouter Address
entre Name
et Phone
.
Mais, je peux ajouter Address
si je la place après Status
.
Est-il un moyen pour résoudre ce problème?
Grâce avant.
- C'est n problème - l'ordre des colonnes est absolument sans importance dans une base de données SQL Server le tableau. Seulement ajouter de nouvelles colonnes à la fin de votre
SELECT
déclaration, vous pouvez spécifier l'ordre dans lequel vous souhaitez colonnes indiquées. - double possible de Changer l'ordre des Colonnes/ajout Newcolumn pour Table existante dans SQLServer2008
- au sujet de votre modifier et le message d'erreur que vous voyez, veuillez lire la première ligne dans ma réponse!
Vous devez vous connecter pour publier un commentaire.
Dans SSMS Outils -> Options -> Designers vous devez décocher l'option "Empêcher l'Enregistrement des Modifications qui exigent la table de re-création" pour vous permettre de le faire dans SSMS.
Cela va reconstruire la table et donc généralement ne vaut pas le souci si la table est de tous les grands et fera le déploiement de la production plus difficile.
Si il y a des colonnes qui, logiquement, vous préférez avoir les uns à côté des autres pour faire de l'écriture de requêtes plus facile, vous pouvez créer une Vue avec la colonne désirée commande.
Ordre de la colonne de n'a pas d'importance soit dans le concepteur ou dans sys.les colonnes.
Le stockage sur disque sera la même peu importe: À l'intérieur du Moteur de Stockage - Anatomie d'un enregistrement.
Il est pas avantage de performance soit.
leaf_offset
danssys.system_internals_partition_columns
est retiré de l'ordre des colonnes de sorte qu'il définit l'ordre initial dans le fixe/variable de la section (siALTER COLUMN
peut à l'origine de ce changement). Cela peut faire une légère différence àvarchar
colonnes à la fin de la section qui sont nulles ou vides ne consomme pas d'espace, même dans la colonne de tableau de décalage.ALTER COLUMN
je pense qu'il aurait besoin d'avoir entrelacésALTER COLUMN
s dans les différentes colonnes.CREATE TABLE #Foo (Filler1 char(4000),Filler2 char(4000)) alter table #Foo alter column Filler1 char(4001)
échoue. C'est ce que tu veux dire ou suis-je comprends votre point de vue?CREATE TABLE #Foo (Filler1 char(4001),Filler2 char(4000))
fonctionnerait bien sûr: pas de dead spaceJe pense que l'utilisation de la requête, il n'est pas possible, mais vous le faites à l'aide de l'INTERFACE utilisateur de SSMS. clic droit sur la table et Insérer une Colonne à chaque fois que vous le souhaitez.
Pense qu'il n'a pas d'importance l'ordre des colonnes.
Si vous voulez un script pour ce faire, tout ce que vous devez faire est de sélectionner les données dans une table temporaire, de supprimer la table, de recréer avec les colonnes dans votre ordre de préférence, puis réinsérez les données de la table temporaire dans le bon ordre.