SQL SERVER 如何批量修改表和存储过程的架构
2011-01-05 04:30
411 查看
SQL 2005 如何批量修改表和存储过程的架构
***首先需要在要修改的库的安全选择中对其中的架构项添加一个新的架构所有者
1。先说说如何在SQL 2005中批量修改存储过程的架构。
执行以下SQL,将执行结果拷贝出来,批量执行既可。
SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name
FROM sys.Procedures p INNER JOIN sys.Schemas s on p.schema_id = s.schema_id
WHERE s.Name = '旧的架构名称'
2。再说说如何在SQL 2005中批量修改表的架构。
方法一:执行以下SQL,将执行结果拷贝出来,批量执行既可。
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
print 'ALTER SCHEMA dbo(新的架构名称) TRANSFER ' + @name
fetch next from csr1 into @name
END
CLOSE csr1
DEALLOCATE csr1
方法二:使用系统存储过程sp_MSforeachtable
EXEC sp_MSforeachtable @command1= "EXEC SP_ChangeObjectOwner '? ', '新架构名 ' "
注:需要先删除该用户所拥有的架构或更改此架构的所有者。否则会提示“数据库主体在该数据库中拥有架构,无法删除”;
每一个数据库用户对应于一个系统登陆帐号,并且每一个架构只能赋予一个用户,所以直接删除用户的架构是不可以的;
可以在用户映射里面将db_owner架构付给dbo(或者执行ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo);
然后就可以删除之前的用户了。
***首先需要在要修改的库的安全选择中对其中的架构项添加一个新的架构所有者
1。先说说如何在SQL 2005中批量修改存储过程的架构。
执行以下SQL,将执行结果拷贝出来,批量执行既可。
SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name
FROM sys.Procedures p INNER JOIN sys.Schemas s on p.schema_id = s.schema_id
WHERE s.Name = '旧的架构名称'
2。再说说如何在SQL 2005中批量修改表的架构。
方法一:执行以下SQL,将执行结果拷贝出来,批量执行既可。
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
print 'ALTER SCHEMA dbo(新的架构名称) TRANSFER ' + @name
fetch next from csr1 into @name
END
CLOSE csr1
DEALLOCATE csr1
方法二:使用系统存储过程sp_MSforeachtable
EXEC sp_MSforeachtable @command1= "EXEC SP_ChangeObjectOwner '? ', '新架构名 ' "
注:需要先删除该用户所拥有的架构或更改此架构的所有者。否则会提示“数据库主体在该数据库中拥有架构,无法删除”;
每一个数据库用户对应于一个系统登陆帐号,并且每一个架构只能赋予一个用户,所以直接删除用户的架构是不可以的;
可以在用户映射里面将db_owner架构付给dbo(或者执行ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo);
然后就可以删除之前的用户了。
相关文章推荐
- sql server 批量修改数据表和存储过程的所有者(2000)或架构(2005)
- SQL SERVER存储过程中如何使用事务与try catch
- 如何在 SQL Server 的存储过程和函数里进行错误处理
- 在Qt5.4中调用 sql server 2008 的存储过程如何获取返回值
- 如何查看SQL Server 2005使用with encryption 加密的存储过程或触发器,函数
- SQL Server 如何在运行时重编译存储过程
- SQL Server中使用表类型参数批量添加和修改的存储过程
- SQL server 2005 如何批量修改架构名(包括表名和存储过程名) .
- SQL Server 2005 - 如何实作CLR存储过程来传回讯息
- SQL Server中使用表类型参数批量添加和修改的存储过程
- 『草稿』如何获取 SQL Server 存储过程的详细语法
- SQL Server中如何写存储过程
- 一个批量更新的存储过程如何写?
- SQL Server 2005 - 如何实作CLR存储过程来传回讯息
- 如何在SQL Server存储过程中执行DTS包
- 在sql server中如何用sql语句查看表结构/存储过程信息
- 如何从 ASP 调用 SQL Server 存储过程
- 如何在SQL Server存储过程中执行DTS包
- [SQL Server]如何快速查找使用了某个字段的所有存储过程?
- SQL server 2005 如何批量修改架构名(包括表名和存储过程名)