SQL0950N The table or index cannot be dropped because it is currently in use

早上用TOAD准备给一张表添加字段,为了以后方便,字段的位置我也做了改变,于是必须删表后重建.

报这个错误:

SQL0950N  The table or index cannot be dropped because it is currently in use

 

在IBM网站上找到的错误提示:

http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=%2Fcom.ibm.db2.luw.messages.sql.doc%2Fdoc%2Fmsql00950n.html

 

SQL0950N

不能删除表或索引,因为当前正在使用。

说明

当打开的游标正在使用表或索引时,不能发出 DROP TABLE 或 DROP INDEX 语句。

不能处理该语句。未删除表或索引。

用户响应

关闭任何需要的游标并重新提交该语句。

sqlcode :-950

sqlstate :55006

 

 

于是拼命找哪个地方用了游标... 发现没有.

嗯,最后把TOAD关掉,用QC连接数据库,删表成功.

 

分析:

 

TOAD有个功能,查询的时候只显示前200行(自己设置),但是你可以用鼠标滚轮滚动,再显示后面的字段.

也就是说,查询的时候它用游标一直占着这表呢.

我回忆了一下,几次尝试删除前我都先查询了一下.可能就是这个问题.

阿门.悲剧.

这个错误是因为您正在尝试删除拥有模式(schema)的数据库主体(database principal)。在 SQL Server 中,模式是一种逻辑容器,可以用来组织和管理数据库对象,如表、视图、存储过程等。每个数据库主体都可以拥有一个或多个模式。如果您尝试删除一个拥有模式的数据库主体,将会收到如上所述的错误消息。 要解决这个问题,您需要按照以下步骤操作: 1. 首先,使用以下语句查找拥有模式的数据库主体的名称和模式的名称: ``` USE [database_name]; SELECT s.name AS schema_name, dp.name AS principal_name FROM sys.schemas s INNER JOIN sys.database_principals dp ON dp.principal_id = s.principal_id WHERE dp.name = 'principal_name'; ``` 请将 "database_name" 替换为您的数据库名称,将 "principal_name" 替换为您要删除的数据库主体名称。 2. 然后,将该数据库主体从其模式中移除。例如,以下语句将名为 "principal_name" 的数据库主体从名为 "schema_name" 的模式中移除: ``` USE [database_name]; ALTER AUTHORIZATION ON SCHEMA::[schema_name] TO dbo; ``` 请将 "database_name" 替换为您的数据库名称,将 "schema_name" 替换为上一步中找到的模式名称。 3. 最后,您可以使用 DROP USER 或 DROP LOGIN 语句删除该数据库主体。例如,以下语句将名为 "principal_name" 的数据库主体删除: ``` USE [database_name]; DROP USER [principal_name]; ``` 请将 "database_name" 替换为您的数据库名称,将 "principal_name" 替换为要删除的数据库主体名称。 请注意,在执行任何删除操作之前,请务必备份您的数据库以防止数据丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值