[sql] 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 Schema :

ALTER SCHEMA exe 
    TRANSFER dbo.Employees


답변

아래 시도

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


답변

ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

ALTER SCHEMASQL 에서 쿼리를 사용할 때 항상 대괄호를 사용해야 하거나 오류 메시지가 나타납니다.


답변

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하고 실행하십시오.


답변

CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO


답변

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에서 테이블을 스키마로 이동하는 방법