by 清泉
17. 十二月 2008 23:10
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
在SQL2000下面,架构对应的其实就是所有者,关于SQL2000修改表及存储过程所有者为DBO请看这里:把sql server 2000的用户表的所有者改成dbo
PS:当WEB上面连接不了数据库但直接用SQL企业管理器可以连接的时候,
要注意数据库的表或存储过程的架构是否正确。