我想更改数据库中表Employees的架构名称。在当前表员工数据库架构名称为dbo,我想将其更改为exe。我该怎么做呢?
例子:
从
dbo.Employees
TO
exe.Employees
我试着问了这个问题:
ALTER SCHEMA exe TRANSFER dbo.Employees
但这给了我一个错误:
无法更改模式“exe”,因为它不存在或您不存在 有权限。
我错过了什么?
我想更改数据库中表Employees的架构名称。在当前表员工数据库架构名称为dbo,我想将其更改为exe。我该怎么做呢?
例子:
从
dbo.Employees
TO
exe.Employees
我试着问了这个问题:
ALTER SCHEMA exe TRANSFER dbo.Employees
但这给了我一个错误:
无法更改模式“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
其他回答
你的代码是:
FROM
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
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO
ALTER SCHEMA exe
TRANSFER dbo.Employees
GO
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]
当我在SQL中使用ALTER SCHEMA查询时,我总是必须使用括号,否则我会得到一个错误消息。
试试下面的
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