
SQL SERVER 如何批量修改表和存储过程的架构
1个回答
展开全部
***首先需要在要修改的库的安全选择中对其中的架构项添加一个新的架构所有者
执行以下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
方法一:执行以下SQL,将执行结果拷贝出来,批量执行既可。
declare @name sysname
declare csr1 cursorforselect TABLE_NAME from INFORMATION_SCHEMA.TABLESopen csr1FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)BEGINSET @name='旧的架构名称.' + @name
print 'ALTER SCHEMA dbo(新的架构名称) TRANSFER ' + @name
fetch next from csr1 into @nameENDCLOSE csr1DEALLOCATE csr1
每一个数据库用户对应于一个系统登陆帐号,并且每一个架构只能赋予一个用户,所以直接删除用户的架构是不可以的;
可以在用户映射里面将db_owner架构付给dbo(或者执行ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo);
然后就可以删除之前的用户了。
执行以下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
方法一:执行以下SQL,将执行结果拷贝出来,批量执行既可。
declare @name sysname
declare csr1 cursorforselect TABLE_NAME from INFORMATION_SCHEMA.TABLESopen csr1FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)BEGINSET @name='旧的架构名称.' + @name
print 'ALTER SCHEMA dbo(新的架构名称) TRANSFER ' + @name
fetch next from csr1 into @nameENDCLOSE csr1DEALLOCATE csr1
每一个数据库用户对应于一个系统登陆帐号,并且每一个架构只能赋予一个用户,所以直接删除用户的架构是不可以的;
可以在用户映射里面将db_owner架构付给dbo(或者执行ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo);
然后就可以删除之前的用户了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |