今天在用ER/Studio生成数据库时发现导入的库Owner不正确,在网上找到以下代码可以批量修改SQLServer的owner:

批量修改SQLServer中Table的ownerDECLARE @T_Name VARCHAR(100),@T_Owner VARCHAR(50),@SQL VARCHAR(500),@T_Old VARCHAR(50),@T_New VARCHAR(50)
批量修改SQLServer中Table的owner
SET @T_Old='OldOwner'
批量修改SQLServer中Table的owner
SET @T_New='dbo'
批量修改SQLServer中Table的owner
DECLARE t_owner CURSOR FOR
批量修改SQLServer中Table的owner
SELECT [NAME],User_NAME(uid) AS UserName  FROM SYSOBJECTS  WHERE XTYPE<>'S'
批量修改SQLServer中Table的owner
OPEN t_owner
批量修改SQLServer中Table的owner
FETCH NEXT FROM t_owner INTO @T_Name,@T_Owner
批量修改SQLServer中Table的owner
WHILE @@FETCH_STATUS=0
批量修改SQLServer中Table的owner
BEGIN
批量修改SQLServer中Table的owner   
IF UPPER(@T_Owner)=UPPER(@T_Old)
批量修改SQLServer中Table的owner       
BEGIN
批量修改SQLServer中Table的owner           
SET @SQL=' sp_changeobjectowner '''+@T_Old+'.'+@T_Name+''','''+@T_New+''''
批量修改SQLServer中Table的owner          
--PRINT @SQL
批量修改SQLServer中Table的owner
          EXEC(@SQL)
批量修改SQLServer中Table的owner       
END
批量修改SQLServer中Table的owner   
FETCH NEXT FROM t_owner INTO @T_Name,@T_Owner
批量修改SQLServer中Table的owner
END
批量修改SQLServer中Table的owner
CLOSE t_owner
批量修改SQLServer中Table的owner
DEALLOCATE t_owner批量修改SQLServer中Table的owner

简要分析一下,这段sql执行原理并不复杂,先从SysObjects表中取出Table名,然后使用sp_changeobjectowner存储过程来修改owner,表名是它的第一个参数,新的Owner名是第二个参数。

相关文章:

  • 2022-12-23
  • 2021-11-17
  • 2021-09-07
  • 2022-01-10
  • 2022-12-23
  • 2022-01-26
  • 2021-11-04
  • 2021-12-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-17
  • 2021-10-14
  • 2022-12-23
  • 2021-07-06
  • 2022-12-23
相关资源
相似解决方案