我想改变表的模式名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
下面尝试
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,我创建了一个新的模式是:
我发现这个职位改模式,但试图改变成新的模式时,也得到同样的权限错误。 我有几个数据库,我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架构
是SQL非常非常小心,重命名对象。 你可以因为如果你不与你在做什么完全离开依赖性失败。 如此说来这工作轻松(太多的话)重命名事物只要你有对环境访问适当的:
exec sp_rename 'Nameofobject', 'ReNameofobject'
请确保您在SSMS正确的数据库上下文是。 得到了同样的错误,你,但我知道的架构已经存在。 不知道我是“主人”上下文。 ALTER工作后,我改变了背景到我的数据库。
在情况下,有人找低版本 -
对于SQL Server 2000:
sp_changeobjectowner @objname = 'dbo.Employess',@newowner = 'exe文件'