今天工作中遇到一个棘手的问题。在以SQL2000为宿主的Sql实例中 select * from A 可以工作,但如果A的Schema name不是默认的
dbo的话 在sql2005中必须使用 select * from [SchemaName].[A]才能工作。
这样就涉及到了修改A所在的Schema.
在google中可以搜索到Steve Schofield的文章,关于
Change Schema Name on Tables and Stored Procedures in SQL Server 2005
http://www.orcsweb.com/articles/change_schema_name.aspx
http://www.orcsweb.com/articles/change_schema_name.aspx
但是得出的语句sp_changeobjectowner '[OldSchemaName].[A]', 'dbo' 却不工作
报错如下
Msg 15001, Level 16, State 1, Procedure sp_changeobjectowner, Line 72
Object '[ess].[OTHER]' does not exist or is not a valid object for this operation.
Object '[ess].[OTHER]' does not exist or is not a valid object for this operation.
在查阅了Microsoft SqlServer 的帮助文档后解决了问题
使用
ALTER SCHEMA NewSchemaName TRANSFER [LodSchemaName].[TableOrViewName]]
就可以在sql2005中改变一个表/试图的schema name了。