You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除SQL服务器用户遇阻:多所有者表的架构处理疑问

解决SQL Server用户移除及架构依赖问题

核心概念纠正

SQL Server中,一张表只能归属一个架构,不存在“多个架构共同拥有同一张表”的情况。你所说的“其他用户架构共同拥有”,实际应该是其他用户对该表拥有访问/操作权限,而非架构层面的归属权。

ALTER SCHEMA语句的作用

你提供的语句:

ALTER SCHEMA dbo TRANSFER OtherUserSchema.TargetTable;  
GO  

这条语句会将OtherUserSchema架构下的TargetTable完整转移到dbo架构,转移完成后:

  • 该表的归属架构变为dbo,原OtherUserSchema架构下不再存在此表
  • 其他用户对该表的权限不会被移除(只要之前配置了对应权限),完全满足“其他用户仍需使用该表且保留权限”的需求

处理删除用户的错误提示

你遇到的错误:

Cannot drop schema 'BDR\TPRGOMET' because it is being referenced by object 'xkartkont'.

这说明BDR\TPRGOMET架构下仍有xkartkont对象(大概率是表)依赖,解决步骤如下:

  1. 先将该对象转移到其他架构(比如dbo):
    ALTER SCHEMA dbo TRANSFER [BDR\TPRGOMET].xkartkont;
    GO
    
    注意带域名的架构名称需要用方括号[]包裹,避免语法错误
  2. 确认该架构下无其他依赖对象:
    SELECT * FROM sys.objects WHERE schema_id = SCHEMA_ID('BDR\TPRGOMET');
    GO
    
  3. 删除架构:
    DROP SCHEMA [BDR\TPRGOMET];
    GO
    
  4. 最后从服务器层面删除用户:
    DROP LOGIN [BDR\TPRGOMET];
    GO
    

带域名的架构相关问题

带域名的架构(对应Windows域用户)本身不会引发特殊问题,操作时只需注意:

  • 引用这类架构时必须用方括号[]包裹名称,避免SQL Server将域名反斜杠解析为语法符号
  • 确保操作时拥有足够的权限(通常需要ALTER ANY SCHEMA及对应对象的权限)

内容的提问来源于stack exchange,提问作者EternallyConfused

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:45:44