Ich versuche, die Größe einer Spalte in SQL Server zu ändern, indem ich:
ALTER TABLE [dbo].[Address]
ALTER COLUMN [Addr1] [nvarchar](80) NULL
wo die Länge Addr1
ursprünglich war 40
.
Es ist fehlgeschlagen und hat diesen Fehler ausgelöst:
The object 'Address_e' is dependent on column 'Addr1'.
ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access
this column.
Ich habe versucht, es zu lesen, und es scheint, dass SQL Server tatsächlich versucht, die Spalte zu löschen, die den Fehler ausgelöst hat, da einige Ansichten auf diese Spalte verweisen.
Address_e
ist eine Ansicht, die vom vorherigen DB-Administrator erstellt wurde.
Gibt es eine andere Möglichkeit, die Größe der Spalte zu ändern?
sql
sql-server
Staelen
quelle
quelle
Antworten:
Die Ansichten werden wahrscheinlich mit der Option WITH SCHEMABINDING erstellt. Dies bedeutet, dass sie explizit verkabelt sind, um solche Änderungen zu verhindern. Sieht so aus, als ob das Schema funktioniert hat und Sie daran gehindert hat, diese Ansichten zu brechen, Glückstag, oder? Wenden Sie sich an Ihren Datenbankadministrator und bitten Sie ihn, die Änderung vorzunehmen, nachdem die Auswirkungen auf die Datenbank bestätigt wurden.
Von MSDN :
quelle
quelle
Wenn jemand in SQL Server 2008 die Spaltenbreite der replizierten Tabelle erhöhen möchte, muss die Eigenschaft von "
replicate_ddl=1
" nicht geändert werden . Befolgen Sie einfach die folgenden Schritte -ALTER TABLE [Table_Name] ALTER COLUMN [Column_Name] varchar(22)
varchar(x)
aufvarchar(22)
und dieselbe Änderung erhöht, die Sie auf dem Abonnenten sehen können (Transaktion wurde repliziert). Sie müssen die Replikation also nicht neu initialisierenHoffe, dies wird allen helfen, die danach suchen.
quelle
Siehe diesen Link
Ändern oder Ändern der Größe einer MS SQL Server-Tabellenspalte mit Standardbeschränkung mithilfe von T-SQL-Befehlen
Die Lösung für ein solches SQL Server-Problem wird sein
Löschen oder Deaktivieren der DEFAULT-Einschränkung in der Tabellenspalte.
Ändern des Tabellenspaltendatentyps und / oder der Datengröße.
Neuerstellen oder Aktivieren der Standardeinschränkung für die SQL-Tabellenspalte.
Tschüss
quelle
Folgendes funktioniert mit der Version des von mir verwendeten Programms: Funktioniert möglicherweise auch für Sie.
Ich werde nur die Anweisung und den Befehl platzieren, die es tun. Klasse ist der Name der Tabelle. Mit dieser Methode ändern Sie es in der Tabelle selbst. nicht nur die Rückkehr zum Suchprozess.
Zeigen Sie die Tabellenklasse an
Ändern Sie die Länge der Spalten FacID (als "faci" bezeichnet) und classnumber (als "classnu" bezeichnet), um sie an die gesamten Beschriftungen anzupassen.
Tabelle erneut anzeigen, um den Unterschied zu erkennen
(Führen Sie den Befehl erneut aus, um den Unterschied festzustellen.)
Dies ändert die tatsächliche Tabelle für immer, aber zum Besseren.
PS Ich habe diese Anweisungen als Notiz für die Befehle zusammengestellt. Dies ist kein Test, kann aber bei einem helfen :)
quelle
Überprüfen Sie die Spaltensortierung. Dieses Skript ändert möglicherweise die Sortierung in den Tabellenstandard. Fügen Sie dem Skript die aktuelle Sortierung hinzu.
quelle