declare @name sysname declare csr1 cursor for select TABLE_NAME from INFORMATION_SCHEMA.TABLES open csr1 FETCH NEXT FROM csr1 INTO @name while (@@FETCH_STATUS=0) BEGIN SET @name='原架构名.'+@name EXEC SP_ChangeObjectOwner @name, '新架构名' fetch next from csr1 into @name END CLOSE csr1 DEALLOCATE csr1
ALTER SCHEMA schema_name TRANSFER securable_name 参数 schema_name 当前数据库中的架构名称,安全对象将移入其中。其数据类型不能为 SYS 或 INFORMATION_SCHEMA。securable_name 要移入架构中的架构包含安全对象的一部分或两部分名称。 以下示例通过将表 Address 从架构 Person 传输到 HumanResources 架构来修改该架构。 USE AdventureWorks; GO ALTER SCHEMA HumanResources TRANSFER Person.Address; GO
sp_changeobjectowner '对象名(包括架构名)','新架构名'
批量修改请用:
方法一:使用游标
declare @name sysname
declare csr1 cursor
for select TABLE_NAME from INFORMATION_SCHEMA.TABLES
open csr1
FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)
BEGIN
SET @name='原架构名.'+@name
EXEC SP_ChangeObjectOwner @name, '新架构名'
fetch next from csr1 into @name
END
CLOSE csr1
DEALLOCATE csr1
方法二:使用系统存储过程sp_MSforeachtable
EXEC sp_MSforeachtable @command1="EXEC SP_ChangeObjectOwner '?','新架构名'"本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/06/10/4258616.aspx
参数
schema_name
当前数据库中的架构名称,安全对象将移入其中。其数据类型不能为 SYS 或 INFORMATION_SCHEMA。securable_name
要移入架构中的架构包含安全对象的一部分或两部分名称。 以下示例通过将表 Address 从架构 Person 传输到 HumanResources 架构来修改该架构。 USE AdventureWorks;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO
到这里面来修改.
GO
ALTER USER [test] WITH DEFAULT_SCHEMA=dbo
GO
有一个表是 MyTable ,那么执行sql语句
select * from MyTable 和
select * from MySchema.MyTable
是一样的效果。怎样在sql2005设置?