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

来源:互联网 发布:qq好友克隆软件下载 编辑:程序博客网 时间:2024/04/30 21:34

拒绝了对对象 ’sp_sdidebug’(数据库 ‘master’,所有者 ‘dbo’)的 EXECUTE 权限”,相信这个问题有很多朋友都遇到过。特别是在转移数据库的时候,由于数据库所有者的权限发生变化而导致不能执行存储过程。出现这个错误,通常是因为在创建存储过程的时候写成类似这样,CREATE/ALTER PROCEDURE [dbo].[StoredProcedureName],这样创建的存储过程所有者为dbo,即DataBaseOwner的简写,当在本地以Integrated Security=SSPI/True作为连接字符串时能够正常执行存储过程,但当把数据库移动到虚拟主机上去后,服务商不会把sa用户的密码给客户,而是给他们一个普通的用户名,通常权限很低,只能执行一个特定数据库里面的存储过程。而当这些存储过程的所有者是dbo而不是服务商提供给客户的用户名时,存储过程就不能被执行。这个时候就必须修改存储过程为如下的样式:CREATE/ALTER PROCEDURE [StoredProcedureName]

 

如果存储过程是一些特殊名字的话,就要加上方括号,如User,通常情况下不需要。这个时候在程序中执行存储过程,存储过程的所有者为连接字符串中指定的用户而不是dbo,这样就能够正确执行了。

原创粉丝点击