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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top