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

例子:

dbo.Employees

TO

exe.Employees

我试着问了这个问题:

ALTER SCHEMA exe TRANSFER dbo.Employees

但这给了我一个错误:

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

我错过了什么?


在sql中重命名对象要非常非常小心。如果你没有完全专注于你正在做的事情,你可能会导致依赖失败。已经说过,这很容易(太多)重命名的东西,只要你有适当的环境访问:

exec sp_rename 'Nameofobject', 'ReNameofobject'

看看MSDN…

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

Then

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

或者你可以在SO…

我如何移动一个表到一个模式在T-SQL


试试下面的

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

创建架构:

IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe')) 
BEGIN
    EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]')
END

ALTER Schema:

ALTER SCHEMA exe 
    TRANSFER dbo.Employees

你的代码是:

FROM
 dbo.Employees
TO
 exe.Employees

我尝试了这个问题。

ALTER SCHEMA exe TRANSFER dbo.Employees

只需编写创建模式exe并执行它


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

在服务器的对象资源管理器中单击安全文件夹, 右击模式 选中“新模式…” 命名为我的新模式(在您的情况下为exe) 点击确定

我发现这篇文章要更改模式,但在尝试更改到新模式时也得到了相同的权限错误。我在我的SSMS中列出了几个数据库,所以我只是尝试指定数据库,它工作:

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 

ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

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


CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO

确保在SSMS中处于正确的数据库上下文中。跟你一样的错误,但我知道模式已经存在了。没有意识到我是在“MASTER”上下文中。在我将上下文更改为数据库之后,ALTER工作正常。


以防有人在寻找低版本-

SQL Server 2000:

sp_changeobjectowner @objname = 'dbo。Employess' , @newowner ='exe'


此外,您还可以将数据从默认模式'dbo'转移到您的模式 源自wizard by 1-双击db图 2-右键单击你的实体->选择属性 3-在标识右侧,更改模式名


SQL2019:

ALTER SCHEMA [SCEMAYOUWANTTOTRANSFERTO] TRANSFER [CURRENTSCHEMA].[TABLENAME];

例子:

ALTER SCHEMA [dbo] TRANSFER [Curated].[MyTable];