J'essaie de changer la taille d'une colonne dans le serveur SQL en utilisant:
ALTER TABLE [dbo].[Address]
ALTER COLUMN [Addr1] [nvarchar](80) NULL
où la longueur de Addr1
était à l'origine40
.
Il a échoué, soulevant cette erreur:
The object 'Address_e' is dependent on column 'Addr1'.
ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access
this column.
J'ai essayé de lire dessus et il semble que parce que certaines vues font référence à cette colonne et il semble que SQL Server essaie en fait de supprimer la colonne qui a soulevé l'erreur.
Address_e
est une vue créée par l'ancien administrateur de base de données.
Existe-t-il un autre moyen de modifier la taille de la colonne?
sql
sql-server
Staelen
la source
la source
Réponses:
Les vues sont probablement créées à l'aide de l'option WITH SCHEMABINDING et cela signifie qu'elles sont explicitement câblées pour empêcher de telles modifications. On dirait que le schemabinding a fonctionné et vous a empêché de casser ces vues, jour de chance, hein? Contactez votre administrateur de base de données et demandez-lui de faire le changement, après qu'il ait affirmé l'impact sur la base de données.
Depuis MSDN :
la source
la source
Si quelqu'un souhaite «augmenter la largeur de colonne de la table répliquée» dans SQL Server 2008, il n'est pas nécessaire de modifier la propriété de «
replicate_ddl=1
». Suivez simplement les étapes ci-dessous -ALTER TABLE [Table_Name] ALTER COLUMN [Column_Name] varchar(22)
varchar(x)
àvarchar(22)
et le même changement que vous pouvez voir sur l'abonné (la transaction a été répliquée). Donc pas besoin de réinitialiser la réplicationJ'espère que cela aidera tous ceux qui le recherchent.
la source
Voir ce lien
Redimensionner ou modifier une colonne de table MS SQL Server avec une contrainte par défaut à l'aide des commandes T-SQL
la solution à un tel problème SQL Server va être
Suppression ou désactivation de la contrainte DEFAULT sur la colonne de table.
Modification du type de données de la colonne de table et / ou de la taille des données.
Recréer ou réactiver la contrainte par défaut sur la colonne de la table sql.
Au revoir
la source
voici ce qui fonctionne avec la version du programme que j'utilise: peut fonctionner pour vous aussi.
Je vais juste placer l'instruction et la commande qui le font. class est le nom de la table. vous le changez dans le tableau lui-même avec cette méthode. pas seulement le retour sur le processus de recherche.
voir la classe de table
changer la longueur des colonnes FacID (vu comme "faci") et classnumber (vu comme "classnu") pour s'adapter à l'ensemble des étiquettes.
voir à nouveau le tableau pour voir la différence
(réexécutez la commande pour voir la différence)
Cela change la table réelle pour de bon, mais pour mieux.
PS J'ai fait ces instructions comme une note pour les commandes. Ce n'est pas un test, mais cela peut vous aider :)
la source
Vérifiez le classement des colonnes. Ce script peut modifier le classement par défaut de la table. Ajoutez le classement actuel au script.
la source