我在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'后就可以执行 这是为什么
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'后就可以执行 这是为什么
--查询分析器中创建
--切换到你新增的用户要控制的数据库
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 ' --删除登录
--名称中输入用户名
--身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户)
--默认设置中,选择你新建的用户要访问的数据库名 服务器角色项
这个里面不要选择任何东西 数据库访问项
勾选你创建的用户需要访问的数据库名
数据库角色中允许,勾选 "public ", "db_ownew " 确定,这样建好的用户与上面语句建立的用户一样
reconfigure;
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure;这个在查询语句里面写了后 过一段时间就失效了 为什么
起始的 sa 用户是可以删除的,删除后可以再加一个 sa,但此sa如果不设置的话,那他不是系统管理员,而是普通用户.
一般当时用完,就exec sp_configure 'show advanced options',0
reconfigure;会不会有这样复原的语句?
with EXECUTE AS 'sa'