在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工作。