486 Stimmen

Wie benennt man eine Tabelle in SQL Server um?

En SQL Abfrage, die ich verwendet habe, ist :

ALTER TABLE oldtable RENAME TO newtable;

Aber ich erhalte eine Fehlermeldung.

Server: Msg 156, Ebene 15, Status 1, Zeile 1
Falsche Syntax in der Nähe des Schlüsselworts "TO".

879voto

Jeff Hornby Punkte 12050

Um eine Tabelle in SQL Server umzubenennen, verwenden Sie die sp_rename Befehl:

exec sp_rename 'schema.old_table_name', 'new_table_name'

163voto

Ravi Kumar Punkte 1793

So benennen Sie eine Spalte um:

sp_rename 'table_name.old_column_name', 'new_column_name' , 'COLUMN';

So benennen Sie eine Tabelle um:

sp_rename 'old_table_name','new_table_name';

30voto

budamivardi Punkte 632

Tabelle Name

sp_rename 'db_name.old_table_name', 'new_table_name'

Säule

sp_rename 'db_name.old_table_name.name' 'userName', 'COLUMN'

Index

sp_rename 'db_name.old_table_name.id', 'product_ID', 'INDEX'

auch für Statik und Datentypen verfügbar

16voto

Wenn Sie sp_rename verwenden, das wie in den obigen Antworten funktioniert, prüfen Sie auch, welche Objekte nach der Umbenennung betroffen sind, die auf diese Tabelle verweisen, da Sie auch diese ändern müssen

Ich habe ein Codebeispiel für Tabellenabhängigkeiten in Pinal Daves Blog ici

USE AdventureWorks
GO
SELECT
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID),
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc,
referenced_schema_name,
referenced_object_name = referenced_entity_name,
referenced_object_type_desc = o1.type_desc,
referenced_server_name, referenced_database_name
--,sed.* -- Uncomment for all the columns
FROM
sys.sql_expression_dependencies sed
INNER JOIN
sys.objects o ON sed.referencing_id = o.[object_id]
LEFT OUTER JOIN
sys.objects o1 ON sed.referenced_id = o1.[object_id]
WHERE
referenced_entity_name = 'Customer'

Alle diese abhängigen Objekte müssen also ebenfalls aktualisiert werden

Oder verwenden Sie ein Add-in, wenn Sie können, einige von ihnen haben Funktion, um Objekt umbenennen, und alle abhängigen, ent Objekte auch

14voto

Stian Punkte 940

Wenn Sie versuchen exec sp_rename und einen LockMatchID-Fehler erhalten, könnte es helfen, zunächst eine use [database]-Anweisung hinzuzufügen:

Ich habe versucht

 exec sp_rename '[database_name].[dbo].[table_name]', 'new_table_name';
 -- Invalid EXECUTE statement using object "Object", method "LockMatchID".

Um das Problem zu beheben, musste ich es umschreiben:

use database_name
exec sp_rename '[dbo].[table_name]', 'new_table_name';

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X