webentwicklung-frage-antwort-db.com.de

Wie benenne ich eine Tabelle in SQL Server um?

Die SQL Abfrage, die ich verwendet habe, ist:

ALTER TABLE oldtable RENAME TO newtable;

Aber es gibt mir einen Fehler.

Server: Nachricht 156, Ebene 15, Status 1, Zeile 1
Falsche Syntax neben dem Schlüsselwort "TO".

357
Switch

Verwenden Sie zum Umbenennen einer Tabelle in SQL Server den Befehl sp_rename :

_exec sp_rename 'schema.old_table_name', 'new_table_name'
_
647
Jeff Hornby

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';
135
Ravi Kumar

Wenn Sie sp_rename verwenden, das wie in den obigen Antworten funktioniert, überprüfen Sie auch, welche Objekte nach dem Umbenennen betroffen sind und auf diese Tabelle verweisen, da Sie diese ebenfalls ändern müssen

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

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 die Funktion, Objekte umzubenennen, und alle hängen auch von Objekten ab

14
user3260414

Wenn Sie exec sp_rename versuchen und einen LockMatchID-Fehler erhalten, kann es hilfreich sein, zuerst eine use [database] -Anweisung hinzuzufügen:

Ich habe es versucht

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

Was ich tun musste, um das Problem zu beheben, war, es neu zu schreiben:

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

Tabellenname

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

6
budamivardi

Das benutze ich:

EXEC sp_rename 'MyTable', 'MyTableNewName';
6

Von hier aus hat nichts funktioniert. Also habe ich die Daten einfach in eine neue Tabelle verschoben

SELECT * 
INTO [acecodetable].['PSCLineReason']
FROM [acecodetable].['15_PSCLineReason'];

vielleicht wird für jemanden nützlich sein ..

In meinem Fall hat es das neue Schema nicht erkannt und auch der DBO war der Besitzer.

AKTUALISIEREN

EXECUTE sp_rename N'[acecodetable].[''TradeAgreementClaim'']', N'TradeAgreementClaim';

Hat für mich gearbeitet. Ich fand es aus dem Skript, das beim Aktualisieren der PK für eine der Tabellen automatisch generiert wurde. Auf diese Weise wurde auch das neue Schema erkannt.

So ändern Sie einen Tabellennamen mit einem anderen Schema:

Beispiel: Ändern Sie dbo.Table1 in work.MyTable 2

EXEC SP_RENAME 'dbo.MyTable1', 'MyTable2'

ALTER SCHEMA wrk TRANSFER dbo.MyTable2
0
live-love