Изменить название схемы таблицы в SQL

Я хочу изменить имя схемы таблицы Employees в базе данных. В текущей таблице Employees имя схемы базы данных dbo я хочу изменить ее на exe. Как мне это сделать?

Пример:

FROM

dbo.Employees

К

exe.Employees

Я попытался с этим запросом:

ALTER SCHEMA exe TRANSFER dbo.Employees

Но это дает мне ошибку:

Невозможно изменить схему "exe", потому что она не существует или вы не имеют разрешение.

Что я пропустил?

Ответ 1

Создать схему:

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

Ответ 2

Попробуйте ниже

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

Ответ 3

ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

Мне всегда нужно использовать скобки, когда я использую запрос ALTER SCHEMA в SQL, или я получаю сообщение об ошибке.

Ответ 4

Через SSMS я создал новую схему:

  • Нажав папку "Безопасность" в обозревателе объектов на моем сервере,
  • щелкните правой кнопкой мыши Схемы
  • Выбранная "Новая схема..."
  • Именовала мою новую схему (exe в вашем случае)
  • Нажмите OK

Я нашел этот пост, чтобы изменить схему, но также получал ту же самую ошибку при попытке перейти на новую схему. У меня есть несколько баз данных, перечисленных в моем SSMS, поэтому я просто попробовал указать базу данных и работал:

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 

Ответ 5

Ваш код:

FROM
 dbo.Employees
TO
 exe.Employees

Я попытался с этим запросом.

ALTER SCHEMA exe TRANSFER dbo.Employees

Просто напишите create schema exe и выполните его

Ответ 7

CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO

Подробнее нажмите здесь

Ответ 8

Будьте очень осторожны, переименовывая объекты в sql. Вы можете вызывать зависания зависимостей, если вы не полностью ушли от того, что делаете. Сказав, что это работает легко (слишком много) для переименования вещей, если у вас есть доступ к окружающей среде:

exec sp_rename 'Nameofobject', 'ReNameofobject'

Ответ 9

Убедитесь, что вы находитесь в правильном контексте базы данных в SSMS. Получил ту же ошибку, что и вы, но я знал, что схема уже существует. Не понял, что я был в контексте "МАСТЕР". ALTER работал после того, как я изменил контекст на мою базу данных.