Изменить имя схемы таблицы в SQL
Я хочу изменить имя схемы таблицы Employees в базе данных. В текущей таблице Employees имя схемы базы данных dbo Я хочу изменить его на exe. Как я могу это сделать ?
пример:
С
dbo.Employees
до
exe.Employees
Я попытался с этим запросом:
ALTER SCHEMA exe TRANSFER dbo.Employees
но это дает мне ошибку:
не удается изменить схему "exe", потому что она не существует или вы не делаете
иметь разрешение.
что я пропустил?
10 ответов:
Создать Схема :
IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe')) BEGIN EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]') ENDизменить схему :
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 SCHEMAзапрос в SQL, или я получаю сообщение об ошибке.
через 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или вы можете проверить его на так...
будьте очень осторожны переименования объектов в sql. Вы можете вызвать сбой зависимостей, если вы не полностью согласны с тем, что делаете. Сказав, что это работает легко( слишком много) для переименования вещей при условии, что у вас есть правильный доступ к среде:
exec sp_rename 'Nameofobject', 'ReNameofobject'
убедитесь, что вы находитесь в правильном контексте базы данных в SSMS. Получил ту же ошибку, что и вы, но я знал, что схема уже существует. Не понимал, что я был в "мастерском" контексте. ALTER работал после того, как я изменил контекст в моей базе данных.
создать новую схему, выполните следующие действия:
1. Open your Database. 2. Route to Security folder. 3. Inside it is a folder named Schema. 4. Right click the schema folder> New Schema. 5. Add a Schema > Click OK.чтобы изменить схему, выполните следующую команду sql:
ALTER SCHEMA new_schema TRANSFER dbo.Employees
Comments