SQL Server에서 테이블 이름을 변경하는 방법
그SQL
사용한 쿼리는 다음과 같습니다.
ALTER TABLE oldtable RENAME TO newtable;
하지만 그것은 나에게 오류를 준다.
서버: Msg 156, 레벨 15, 스테이트 1, 라인 1
키워드 'TO' 근처의 구문이 잘못되었습니다.
SQL Server에서 테이블의 이름을 변경하려면 다음 명령을 사용합니다.
exec sp_rename 'schema.old_table_name', 'new_table_name'
열 이름을 변경하려면:
sp_rename 'table_name.old_column_name', 'new_column_name' , 'COLUMN';
테이블 이름을 변경하려면:
sp_rename 'old_table_name','new_table_name';
테이블명
sp_rename 'db_name.old_table_name', 'new_table_name'
기둥.
sp_rename 'db_name.old_table_name.name', 'userName', 'COLUMN'
색인
sp_rename 'db_name.old_table_name.id', 'product_ID', 'INDEX'
스태틱스 및 데이터 유형에도 사용 가능
위의 답변과 같은 sp_rename을 사용하는 경우 이름을 변경한 후 영향을 받는 개체와 해당 테이블을 참조하는 개체도 확인합니다.
여기 피날 데이브의 블로그에서 테이블 의존성에 대한 코드 예를 들어봤습니다.
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'
따라서 이러한 모든 종속 개체도 업데이트해야 합니다.
또는 가능하면 추가 기능을 사용할 수 있습니다. 개체 이름을 변경하는 기능이 있는 것도 있고 모든 종속 개체도 마찬가지입니다.
노력하면exec sp_rename
Lock Match를 수신합니다.ID 오류는 먼저 use [database]문을 추가하는 데 도움이 될 수 있습니다.
나는 노력했다.
exec sp_rename '[database_name].[dbo].[table_name]', 'new_table_name';
-- Invalid EXECUTE statement using object "Object", method "LockMatchID".
수정하기 위해 해야 할 일은 다음과 같이 다시 쓰는 것이었습니다.
use database_name
exec sp_rename '[dbo].[table_name]', 'new_table_name';
다른 스키마를 사용하여 테이블 이름을 변경하려면:
예:dbo를 바꿉니다.MyTable1에서 wrk로 이동합니다.마이테이블2
EXEC SP_RENAME 'dbo.MyTable1', 'MyTable2'
ALTER SCHEMA wrk TRANSFER dbo.MyTable2
여기서 제안한 것은 아무 것도 효과가 없었다.그래서 데이터를 새 테이블에 삽입했습니다.
SELECT *
INTO [acecodetable].['PSCLineReason']
FROM [acecodetable].['15_PSCLineReason'];
아마 누군가에게 유용할 것이다.
내 경우 새로운 스키마도 dbo가 소유주임을 인식하지 못했다.
갱신하다
EXECUTE sp_rename N'[acecodetable].[''TradeAgreementClaim'']', N'TradeAgreementClaim';
나한테는 통했어테이블 중 하나의 PK를 갱신할 때 자동으로 생성되는 스크립트에서 찾았습니다.이렇게 하면 새로운 스키마도 인식됩니다.
언급URL : https://stackoverflow.com/questions/5335528/how-to-rename-a-table-in-sql-server
'source' 카테고리의 다른 글
첫 번째 줄에 가입하는 방법 (0) | 2023.04.07 |
---|---|
SQL Server 트랜잭션의 올바른 사용 (0) | 2023.04.07 |
SQL Server에서 날짜/시간을 자르는 방법은 무엇입니까? (0) | 2023.04.07 |
Output 매개 변수를 사용하여 저장 프로시저를 실행하시겠습니까? (0) | 2023.04.07 |
SQL Server 저장 프로시저에 어레이를 전달하는 방법 (0) | 2023.04.07 |