我想更改Employees
数据库中表的模式名称。在当前表Employees
数据库模式名称是dbo
我想将其更改为exe
. 我该怎么做 ?
例子:
从
dbo.Employees
至
exe.Employees
我试过这个查询:
ALTER SCHEMA exe TRANSFER dbo.Employees
但这给了我一个错误:
无法更改架构“exe”,因为它不存在或您没有权限。
我错过了什么?
我想更改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 exe
TRANSFER dbo.Employees
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]
在 SQL 中使用查询时,我总是必须使用方括号ALTER SCHEMA
,否则会收到错误消息。
试试下面
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,我通过以下方式创建了一个新模式:
我发现这篇文章更改了架构,但在尝试更改为新架构时也遇到了相同的权限错误。我的 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上检查它...
以防万一,有人在寻找较低版本 -
对于 SQL Server 2000:
sp_changeobjectowner @objname = 'dbo.Employess' , @newowner ='exe'
Make sure you're in the right database context in SSMS. Got the same error as you, but I knew the schema already existed. Didn't realize I was in 'MASTER' context. ALTER worked after I changed context to my database.
在 sql 中重命名对象要非常小心。如果你没有完全放弃你正在做的事情,你可能会导致依赖关系失败。话虽如此,只要您可以在环境中正确访问,这很容易(太多了)重命名事物:
exec sp_rename 'Nameofobject', 'ReNameofobject'
您还可以通过 1-双击数据库图 2-右键单击您的 certian 实体->选择属性 3-在身份右侧将数据从默认模式“dbo”传输到向导中的模式,更改模式名称