UFO ET IT

SQL에서 테이블의 스키마 이름 변경

ufoet 2023. 4. 8. 12:01
반응형

SQL에서 테이블의 스키마 이름 변경

테이블의 스키마 이름을 변경하고 싶다Employees를 참조해 주세요.현재 표에서Employees데이터베이스 스키마 이름은dbo로 바꾸고 싶습니다exe어떻게 하면 좋을까요?

예:

부터

dbo.Employees

로.

exe.Employees

다음 질의를 시도했습니다.

ALTER SCHEMA exe TRANSFER dbo.Employees

하지만 이 경우 오류가 발생합니다.

스키마 'exe'가 없거나 사용 권한이 없으므로 변경할 수 없습니다.

내가 뭘 놓쳤지?

스키마 생성:

IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe')) 
BEGIN
    EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]')
END

ALTER 스키마:

ALTER SCHEMA exe 
    TRANSFER dbo.Employees
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

항상 브래킷을 사용해야 합니다.ALTER SCHEMASQL에서 쿼리하지 않으면 오류 메시지가 나타납니다.

아래를 시험해 보세요

declare @sql varchar(8000), @table varchar(1000), @oldschema varchar(1000), @newschema   varchar(1000)

  set @oldschema = 'dbo'
  set @newschema = 'exe'

 while exists(select * from sys.tables where schema_name(schema_id) = @oldschema)

  begin
      select @table = name from sys.tables 
      where object_id in(select min(object_id) from sys.tables where  schema_name(schema_id)  = @oldschema)

    set @sql = 'alter schema ' + @newschema + ' transfer ' + @oldschema + '.' + @table

   exec(@sql)
 end
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO

SSMS를 통해 다음과 같은 방법으로 새로운 스키마를 작성했습니다.

  • 서버 내의 오브젝트 탐색기에서 보안 폴더를 클릭하면
  • 오른쪽 클릭 스키마
  • 새 스키마를 선택했습니다.."
  • 내 새 스키마 이름 지정(이 경우 exe)
  • [확인]을 클릭합니다.

스키마를 변경하기 위해 이 게시물을 찾았는데 새 스키마로 변경하려고 할 때 동일한 권한 오류가 발생했습니다.SSMS에 몇 개의 데이터베이스가 있기 때문에 데이터베이스를 지정하려고 하면 다음과 같이 동작합니다.

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 

고객님의 코드는 다음과 같습니다.

FROM
 dbo.Employees
TO
 exe.Employees

나는 이 질문을 시도했다.

ALTER SCHEMA exe TRANSFER dbo.Employees

그냥 쓰세요create schema exe실행하다

MSDN 확인...

CREATE SCHEMA: http://msdn.microsoft.com/en-us/library/ms189462.aspx

그리고나서

ALTER SCHEMA: http://msdn.microsoft.com/en-us/library/ms173423.aspx

아니면 SO에서 확인할 수도 있고...

T-SQL에서 테이블을 스키마로 이동하려면 어떻게 해야 합니까?

SSMS에서 올바른 데이터베이스 컨텍스트에 있는지 확인하십시오. 같은 오류가 발생했지만 스키마가 이미 있다는 것을 알았습니다.내가 '마스터' 문맥에 있는 줄 몰랐네ALTER는 내가 내 데이터베이스로 콘텍스트를 변경한 후에 작동했다.

혹시라도 더 낮은 버전을 찾는 사람이 있다면...

SQL Server 2000의 경우:

sp_changeobjectowner @objname = 'dbo'입니다.Employeeess', @newowner ='exe'

sql 내의 오브젝트 이름을 변경할 때는 매우 주의해 주십시오.작업을 제대로 수행하지 않으면 종속성이 실패할 수 있습니다.환경에 대한 적절한 액세스만 있으면, 이 조작은 물건의 이름을 변경하는 데 있어서 간단하게 기능합니다(너무 많이).

exec sp_rename 'Nameofobject', 'ReNameofobject'

또한 기본 스키마 'dbo'에서 마법사에서 스키마로 데이터를 전송할 수 있습니다.db diagram을 1번 더블클릭하고 증명서 엔티티를 우클릭합니다.--> ID 오른쪽에서 속성 3번 선택, 스키마 이름을 변경합니다.

SQL2019의 경우:

ALTER SCHEMA [SCEMAYOUWANTTOTRANSFERTO] TRANSFER [CURRENTSCHEMA].[TABLENAME];

예:

ALTER SCHEMA [dbo] TRANSFER [Curated].[MyTable];

언급URL : https://stackoverflow.com/questions/15482838/change-schema-name-of-table-in-sql

반응형