首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在SQL中更改表的架构名称

在SQL中更改表的架构名称
EN

Stack Overflow用户
提问于 2013-03-19 01:13:29
回答 11查看 329.7K关注 0票数 208

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

示例:

从…

代码语言:javascript
复制
dbo.Employees

代码语言:javascript
复制
exe.Employees

我尝试使用这个查询:

代码语言:javascript
复制
ALTER SCHEMA exe TRANSFER dbo.Employees

但这给了我一个错误:

无法更改架构'exe',因为它不存在或您没有权限。

我错过了什么?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2013-03-19 01:32:24

创建架构:

代码语言:javascript
复制
IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe')) 
BEGIN
    EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]')
END

ALTER Schema :

代码语言:javascript
复制
ALTER SCHEMA exe 
    TRANSFER dbo.Employees
票数 320
EN

Stack Overflow用户

发布于 2015-09-26 04:02:32

代码语言:javascript
复制
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

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

票数 39
EN

Stack Overflow用户

发布于 2013-03-19 01:20:14

请在下面尝试

代码语言:javascript
复制
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
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15482838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档