我在csdn上面查到的方法是 
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[test]
with EXECUTE AS 'dbo'
AS
exec sp_configure 'show advanced options',1
reconfigure;
但是执行时却提示
消息 15247,级别 16,状态 1,过程 sp_configure,第 94 行
用户没有执行此操作的权限。
消息 5812,级别 14,状态 1,过程 test,第 7 行
您没有运行 RECONFIGURE 语句的权限。(1 行受影响)
但是我的dbo 是sa啊  为什么呢
而且我去掉with EXECUTE AS 'dbo'后就可以执行 这是为什么

解决方案 »

  1.   

    --用户的创建方法 
      
    --查询分析器中创建 
    --切换到你新增的用户要控制的数据库     
    use     你的库名     
    go     
      
    --新增用户     
    exec     sp_addlogin     'test '                         --添加登录     
    exec     sp_grantdbaccess     N 'test '                         --使其成为当前数据库的合法用户     
    exec     sp_addrolemember     N 'db_owner ',     N 'test '                         --授予对自己数据库的所有权限     
      
    --这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表     
    go     
      
    --删除测试用户     
    exec     sp_revokedbaccess     N 'test '                         --移除对数据库的访问权限     
    exec     sp_droplogin     N 'test '                         --删除登录   
      

  2.   

    如果在企业管理器中创建的话,就用: 企业管理器--安全性--右键登录--新建登录 常规项 
    --名称中输入用户名 
    --身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户) 
    --默认设置中,选择你新建的用户要访问的数据库名 服务器角色项 
    这个里面不要选择任何东西 数据库访问项 
    勾选你创建的用户需要访问的数据库名 
    数据库角色中允许,勾选 "public ", "db_ownew " 确定,这样建好的用户与上面语句建立的用户一样   
      

  3.   

    http://www.yesky.com/imagesnew/software/tsql/ts_sp_ca-cz_0put.htm
      

  4.   

    exec sp_configure 'show advanced options',1
    reconfigure;
    exec sp_configure 'Ad Hoc Distributed Queries',1
    reconfigure;这个在查询语句里面写了后 过一段时间就失效了 为什么  
      

  5.   

    你的用户名是 sa,但并非你就是系统管理员.
    起始的 sa 用户是可以删除的,删除后可以再加一个 sa,但此sa如果不设置的话,那他不是系统管理员,而是普通用户. 
      

  6.   

    服务器角色是撒sysadmin     用户映射是除了我自己的数据库 其他都有   用户名是dbo
      

  7.   


    一般当时用完,就exec sp_configure 'show advanced options',0
    reconfigure;会不会有这样复原的语句?
      

  8.   

    印象中是这样。。ALTER PROCEDURE [dbo].[test]
    with EXECUTE AS 'sa'