Hoe hernoem ik een tabel in SQL Server?

De SQL-query die ik heb gebruikt is:

ALTER TABLE oldtable RENAME TO newtable;

Maar ik krijg een foutmelding.

Server: Msg 156, niveau 15, staat 1, regel 1
Onjuiste syntaxis bij het zoekwoord ‘TO’.


Antwoord 1, autoriteit 100%

Als u de naam van een tabel in SQL Server wilt wijzigen, gebruikt u de sp_renamecommando:

exec sp_rename 'schema.old_table_name', 'new_table_name'

Antwoord 2, autoriteit 20%

De naam van een kolom wijzigen:

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

De naam van een tafel wijzigen:

sp_rename 'old_table_name','new_table_name';

Antwoord 3, autoriteit 2%

Als u sp_rename gebruikt, wat werkt zoals in bovenstaande antwoorden, controleer dan ook welke objecten worden beïnvloed na het hernoemen, die verwijzen naar die tabel, want u moet die ook wijzigen

Ik heb een codevoorbeeld voor tabelafhankelijkheden genomen op Pinal Dave’s blog 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'

Dus al deze afhankelijke objecten moeten ook worden bijgewerkt

Of gebruik indien mogelijk een invoegtoepassing, sommige hebben een functie om objecten te hernoemen en alle afhankelijke objecten ook


Antwoord 4, autoriteit 2%

Tabelnaam

sp_rename 'db_name.old_table_name', 'new_table_name'

Kolom

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

Index

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

ook beschikbaar voor statica en datatypes


Antwoord 5, autoriteit 2%

Als u exec sp_renameprobeert en een LockMatchID-fout ontvangt, kan het helpen om eerst een use [database]-instructie toe te voegen:

Ik heb het geprobeerd

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

Wat ik moest doen om het te repareren, was het te herschrijven naar:

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

Antwoord 6

Een tabelnaam wijzigen met een ander schema:

Voorbeeld: verander dbo.MyTable1 in wrk.MyTable2

EXEC SP_RENAME 'dbo.MyTable1', 'MyTable2'
ALTER SCHEMA wrk TRANSFER dbo.MyTable2

Antwoord 7

Niets werkte van hier voorgesteld ..
Dus heb de gegevens gewoon in een nieuwe tabel gepord

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

misschien is het nuttig voor iemand..

In mijn geval herkende het het nieuwe schema niet, ook was de dbo de eigenaar..

UPDATE

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

Werkte voor mij.
Ik vond het uit het automatisch gegenereerde script bij het bijwerken van de PK voor een van de tabellen.
Op deze manier herkende het ook het nieuwe schema..

Other episodes