在SQL中更改表的模式名称

我想在数据库中更改表Employees模式名称。 在当前表Employees数据库架构名称是dbo我想将其更改为exe 。 我该怎么做 ?

例:

 dbo.Employees 

 exe.Employees 

我试着用这个查询:

 ALTER SCHEMA exe TRANSFER dbo.Employees 

但是这给了我一个错误:

无法更改模式“exe”,因为它不存在或您没有权限。

我错过了什么?

创build架构:

 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 

尝试下面

 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] 

当我在SQL中使用ALTER SCHEMA查询时,总是必须使用括号,否则会出现错误消息。

通过SSMS,我创build了一个新的模式:

  • 在我的服务器中的对象浏览器中单击安全性文件夹,
  • 右键单击架构
  • 选定“新架构…”
  • 命名我的新架构(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并执行即可

查看MSDN …

CREATE SCHEMA : http : //msdn.microsoft.com/en-us/library/ms189462.aspx

然后

ALTER SCHEMA : http : //msdn.microsoft.com/en-us/library/ms173423.aspx

或者你可以检查它…

如何将表移动到T-SQL中的模式中

 CREATE SCHEMA exe AUTHORIZATION [dbo] GO ALTER SCHEMA exe TRANSFER dbo.Employees GO 

欲了解更多详情请点击这里

在sql中非常小心地重命名对象。 如果你没有完全的了解你正在做的事情,你可能会导致依赖关系失败。 话虽如此,这很容易(太多)重命名的东西,只要你有访问适当的环境:

 exec sp_rename 'Nameofobject', 'ReNameofobject' 

确保你在SSMS中正确的数据库上下文。 得到了同样的错误,但我知道模式已经存在。 没有意识到我是在'MASTER'的背景下。 在将上下文更改为我的数据库后,ALTER工作。