217

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

例子:

dbo.Employees

exe.Employees

我试过这个查询:

ALTER SCHEMA exe TRANSFER dbo.Employees

但这给了我一个错误:

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

我错过了什么?

4

11 回答 11

330

创建架构:

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

改变模式:

ALTER SCHEMA exe 
    TRANSFER dbo.Employees
于 2013-03-18T17:32:23.977 回答
40
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

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

于 2015-09-25T20:02:31.613 回答
29

试试下面

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
于 2013-03-18T17:20:13.863 回答
13
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO
于 2015-12-02T05:59:19.100 回答
7

通过 SSMS,我通过以下方式创建了一个新模式:

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

我发现这篇文章更改了架构,但在尝试更改为新架构时也遇到了相同的权限错误。我的 SSMS 中列出了几个数据库,所以我只是尝试指定数据库并且它有效:

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 
于 2014-10-14T21:30:13.453 回答
4

您的代码是:

FROM
 dbo.Employees
TO
 exe.Employees

我试过这个查询。

ALTER SCHEMA exe TRANSFER dbo.Employees

只需编写create schema exe并执行它

于 2013-07-19T13:17:57.760 回答
3

看看 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 中的架构中

于 2013-03-18T17:18:32.490 回答
2

以防万一,有人在寻找较低版本 -

对于 SQL Server 2000:

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

于 2018-11-22T06:50:09.547 回答
1

Make sure you're in the right database context in SSMS. Got the same error as you, but I knew the schema already existed. Didn't realize I was in 'MASTER' context. ALTER worked after I changed context to my database.

于 2015-12-03T18:55:38.390 回答
0

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

exec sp_rename 'Nameofobject', 'ReNameofobject'
于 2013-03-18T17:17:31.617 回答
0

您还可以通过 1-双击数据库图 2-右键单击您的 certian 实体->选择属性 3-在身份右侧将数据从默认模式“dbo”传输到向导中的模式,更改模式名称

于 2021-12-13T20:10:05.917 回答