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

例子:

dbo.Employees

TO

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:

ALTER SCHEMA exe 
    TRANSFER dbo.Employees

其他回答

以防有人在寻找低版本-

SQL Server 2000:

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

看看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

SQL2019:

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

例子:

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

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

CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO