VS 2010 Datenbank Projektdaten auf Spaltennamen ändern dropping
-
26-09-2019 - |
Frage
Ich teste die neuen Datenbank-Projekt Features von Visual Studio 2010 und will den Namen einer Spalte in einer Tabelle ändern. Ich änderte den Namen in dem Skript zu erstellen und zum Einsatz gegen die Datenbank. Das Skript, das generiert wurde, fiel nur die Säule und eine neue Spalte mit dem richtigen Namen hinzugefügt, aber alle Daten verloren.
Gibt es eine Einstellung, die die Spaltendaten nicht fallen wird?
Ich bin für die „DataDude“ Lösung für dieses Problem. (Wenn es einen gibt)
PRINT N'Altering [dbo].[Users]...';
GO
ALTER TABLE [dbo].[Users] DROP COLUMN [TestX];
GO
ALTER TABLE [dbo].[Users]
ADD [Testn] NVARCHAR (50) NULL;
GO
Danke, Keith
Lösung
Verwenden Sie die Schema-Ansicht durch Anklicken von Ansicht -> Datenbank-Schema-Ansicht
Erweitern Sie die Tabellen und ihre Spalten.
rechts die Spalte klicken und Umgestalten klicken -> Umbenennen ...
Ändern Sie den Namen im Feld Neuer Name mit Vorschau der Änderungen geprüft Feld ein.
Beachten Sie verändert nicht nur die Spaltennamen, sondern auch die gespeicherten Prozeduren, die diese Spalte Referenzierung werden können.
in dem Datenbank-Projekt eine refactorlog Datei erstellt, das zeigt die Namensänderung.
Wenn das neue Schema gegen die bestehende Datenbank bereitgestellt wird, scheint es, dass DataDude Blicke auf der refactorlog-Datei und die dbo._Refactorlog Tabelle zu bestimmen, welche refactors müssen gegen die Datenbank verarbeitet werden.
Hier ist der Code es dieses Verfahren erzeugte mit der Änderung eines Spaltenname, der auch in einer gespeicherten Prozedur verwiesen wurde:
EXECUTE sp_rename @objname = N'[dbo].[Users].[TestF]', @newname = N'TestG', @objtype = N'COLUMN';
GO
PRINT N'Altering [dbo].[ListUsers]...';
GO
ALTER PROCEDURE [dbo].[ListUsers]
AS
SELECT [ID], [FirstName], [LastName], [TestG]
FROM Users
RETURN 0
GO
Keith
Andere Tipps
Wenn die Tabelle klein ist, können Sie eine neue Tabelle mit den richtigen Spalten erstellen, und fügen Sie dann aus der alten Tabelle in die neuen, wechselnden Spalten, wie Sie gehen.
Wenn die Tabelle groß ist, und man kann auch nicht die Zeit, RAM oder Anstrengung leisten, um die gesamte Tabelle zu kopieren, können Sie
alter table add new_column
dann
update table set new_column=old_column
dann
alter table drop column old_column
.
wird Syntax natürlich vereinfacht.
Die Art und Weise, dass Visual Studio-Datenbank-Projekte Schema behandeln ändert eignet sich für diese Art von Verwirrung. Es ist sehr schwierig für VS zu sagen, wenn Sie einfach eine Spalte umbenannt (und sollten die Daten erhalten) oder entfernt, um die Säule und fügte eine andere. Meine Firma arbeitete für eine ganze Weile auf einem Datenbankschema-Source-Control-Produkt, das alle diese gleichen Probleme hatte.
Am Ende hat mich zu der Überzeugung gelangt, dass der beste Weg, um Griff Schemaänderungen, dass durch K. Scott Allen (bezogen von Jeff Atwood) . Diese Serie von Artikeln sollten Sie auf einem Kurs in Richtung einer besseren Datenbankversion Kontrolllösung eingestellt.