拒绝了对对象 'sp_sdidebug'(数据库 'master',所有者 'dbo')的 EXECUTE 权限

在.net里应用数据库SQL SERVER的调用,有时会出现
message:拒绝了对对象 'sp_sdidebug'(数据库 'master',所有者 'dbo')的 EXECUTE 权限
sp_sdidebug这个扩展存储过程是应用在调试时应用的存储过程,在查询分析器里做SQL调试有个前提就是要确保具有执行 sp_sdidebug扩展过程的权限。

解决这个问题有2种解决方法
1、在SQL SERVER里找到该扩展存储过程,属性,权限,找到.net应用的数据库用户授予exec权限即可。
2、因为这个是调试应用,在release版本并不需要,那么在.net项目的调试中取消SQL调试即可(vs2003)。
或如网上其它的方式通过更改它的调试类型来处理该问题,并使调试正常进行(vs2005)。
"调试"->“附加到进程”对话框中点击“附加到:”后的“选择”按钮,弹出窗口"选择代码类型",其默认选项是“自动确定要调试的代码类型”,选择“调试以下代码”,单选“托管”即可。
另外,若项目整体无法启动调试,也可以先在项目属中指定从某一URL进行调试,完后在启动之后通过上面的方法将该进程 附加到调试器中也可以实现对项目的调试。

 

另外应该注意到,sp_sdidebug是master中的扩展存储过程,如果不存在应该添加

 

USE master
GO

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_sdidebug]') and OBJECTPROPERTY(id, N'IsExtendedProc') = 1)
exec sp_dropextendedproc N'[dbo].[sp_sdidebug]'
GO

exec sp_addextendedproc N'sp_sdidebug', N'(server internal)'
GO

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

 

 

posted @ 2010-04-01 17:29  xxd  阅读(4831)  评论(0编辑  收藏  举报