wake-up-neo.com

Benennen Sie die Spalte SQL Server 2008 um

Ich verwende SQL Server 2008 und Navicat. Ich muss eine Spalte in einer Tabelle mit SQL umbenennen.

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

Diese Aussage funktioniert nicht.

531
Serhio g. Lazin

Verwenden Sie sp_rename

EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'

Siehe: SQL SERVER - So benennen Sie einen Spaltennamen oder einen Tabellennamen um

Dokumentation: sp_rename (Transact-SQL)

Für Ihren Fall wäre das:

EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'

Denken Sie daran, einfache Anführungszeichen zu verwenden, um Ihre Werte einzuschließen. 

999
Habib

Alternativ zu SQL können Sie dies in Microsoft SQL Server Management Studio tun. Hier sind einige schnelle Möglichkeiten, die GUI zu verwenden:

Erster Weg

Langsamer Doppelklick auf die Spalte. Der Spaltenname wird zu einem bearbeitbaren Textfeld.


Zweiter Weg

Klicken Sie mit der rechten Maustaste auf die Spalte und wählen Sie im Kontextmenü die Option Umbenennen.

Zum Beispiel:

To Rename column name


Dritter Weg

Diese Methode ist vorzuziehen, wenn Sie mehrere Spalten gleichzeitig umbenennen möchten.

  1. Klicken Sie mit der rechten Maustaste auf die Tabelle, die die umzubenennende Spalte enthält.
  2. Klicken Sie auf Design.
  3. Klicken Sie im Tabellendesignfenster auf das Textfeld des Spaltennamens, den Sie ändern möchten, und bearbeiten Sie ihn.

Zum Beispiel:MSSMS Table Design Example

HINWEIS: Ich weiß, dass OP speziell nach einer SQL-Lösung gefragt hat, ich dachte, das könnte anderen helfen :)

86
Carrie Kendall

Versuchen:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
52
TechDo

Sie sollten auch das Schema der Tabelle angeben. Andernfalls erhalten Sie folgende Fehlermeldung:

Meldung 15248, Ebene 11, Status 1, Prozedur sp_rename, Zeile 238 Entweder der Parameter @objname ist mehrdeutig oder der beanspruchte @objtype (COLUMN) ist falsch.

Wenn es sich um ein Bereitstellungsskript handelt, würde ich auch empfehlen, zusätzliche Sicherheit hinzuzufügen.

    if  exists (select 1 from sys.columns where name = 'OldColumnName' and object_name(object_id) = 'TableName') AND
not exists (select 1 from sys.columns where name = 'NewColumnName' and object_name(object_id) = 'TableName')
EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';
16
Taher

Es wäre ein guter Vorschlag, eine bereits integrierte Funktion zu verwenden. Eine andere Möglichkeit besteht darin,

  1. Erstellen Sie eine neue Spalte mit dem gleichen Datentyp und dem NEUEN NAME. 
  2. Führen Sie eine UPDATE/INSERT-Anweisung aus, um alle Daten in die neue Spalte zu kopieren. 
  3. Lass die alte Spalte fallen.

Der Vorteil von sp_rename ist, dass alle damit verbundenen Beziehungen berücksichtigt werden.

Aus der Dokumentation :

sp_rename benennt den verknüpften Index automatisch um, wenn eine PRIMARY KEY- oder UNIQUE-Einschränkung umbenannt wird. Wenn ein umbenannter Index an eine PRIMARY KEY-Einschränkung gebunden ist, wird die PRIMARY KEY-Einschränkung auch automatisch in sp_rename umbenannt. Mit sp_rename können primäre und sekundäre XML-Indizes umbenannt werden.

15
NeverHopeless

Sie können sp_rename verwenden, um eine Spalte umzubenennen.

USE YourDatabase;  
GO  
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';  
GO  

Der erste Parameter ist das zu ändernde Objekt, der zweite Parameter ist der neue Name, der dem Objekt gegeben wird, und der dritte Parameter COLUMN informiert den Server darüber, dass die Umbenennung für die Variable column gilt Umbenennen von tables, index und alias data type.

12

Da ich oft hierher komme und mich dann frage, wie man die Klammern benutzt, kann diese Antwort für diejenigen wie mich nützlich sein.

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • Die OldColumnName darf nicht im [] sein. Es wird nicht funktionieren.
  • Geben Sie NewColumnName nicht in [] ein, da dies zu [[NewColumnName]] führt.
9
HonzaB

SQL Server Management Studio verfügt über einige systemdefinierte Stored Procedures (SP)
Eine davon wird zum Umbenennen einer Spalte verwendet. Die SP ist sp_rename

Syntax: sp_rename '[table_name] .old_column_name', 'new_column_name'
Weitere Hilfe finden Sie in diesem Artikel: sp_rename von Microsoft Docs

Hinweis: Bei Ausführung dieses SP= der SQL-Server wird Ihnen eine Warnmeldung als ' Achtung: Das Ändern eines Teils eines Objektnamens kann Skripte und gespeicherte Prozeduren beschädigen' Dies ist nur dann wichtig, wenn Sie Ihren eigenen SP geschrieben haben, der die Spalte in der Tabelle enthält, in der Sie sich befinden im Begriff sich zu ändern.

3
Tahir77667

Verbesserte Version von @Taher

DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)

SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName

IF EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @OldColumnName AND OBJECT_NAME(object_id) = @TableName
)
AND NOT EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @NewColumnName AND OBJECT_NAME(object_id) = @TableName
)
BEGIN
    EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END
1
Rikin Patel

Oder Sie können einfach zweimal auf die Spalte in SQL Management Studio klicken und sie über die Benutzeroberfläche umbenennen ...

0
Dave Cole