SQL Server运行查询分析器在数据库中拒绝了SETUSER权限出错

29December

1:13 PM

131 次浏览

1 条评论

在导入数据之前运行SQL Serve查询分析器时,出现错误提示:在数据库‘abc’中拒绝了SETUSER权限,或者“SETUSER permission denied in database 'abc'”。
这种情况通常是在转移SQL数据库的时候出现,由于不同服务器给予的权限不同,当把数据库从一台服务器迁移到另一台服务器时(比如从万网的虚拟主机迁移到其它服务商的虚拟主机),就会出现授予的权限不一致而出错的情况。

解决方法:这时候,要求具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员资格。但一般来讲SETUSER权限默认授予sysadmin 固定服务器角色成员且不可转让。所以出现这种问题很正常。一般可以不需劳烦服务器管理员修改权限,只需要将sql查询文件中的SETUSER 删除即可。比如:
SETUSER 'John'

GO
GRANT SELECT ON computer_types TO joe
GO
SETUSER

如果是从万网的SQL Server数据库生成的sql查询文件中,可以先将如下语句删除:
setuser N'John'

GO

CREATE procedure NewSortChange
(
@Lang int,
@FormId int,
@JumpId int,

@err int=0 output
)
AS

select @err=0
declare @sort1 int, @sort2 int, @i int, @sort_small int, @sort_big int


if @FormId=@JumpId
begin
select @err=1
GOTO _END
end

select @sort1=SortId from news where id=@FormId and LanauageId=@Lang
if @@rowcount<1
begin
select @err=1
GOTO _END
end

select @sort2=SortId from news where id=@JumpId and LanauageId=@Lang
if @@rowcount<1
begin
select @err=1
GOTO _END
end

if @sort1>@sort2
begin
set @i=1
set @sort_small=@sort2-1
set @sort_big =@sort1
end
else
begin
set @i=-1
set @sort_small=@sort1
set @sort_big =@sort2+1
end

update news set SortId=SortId+@i where LanauageId=@Lang and SortId>@sort_small and SortId<@sort_big
update news set SortId=@sort2 where LanauageId=@Lang and id=@FormId

_END:
GO
setuser
GO

保存之后然后再打开该sql文件并运行即可消除SETUSER权限错误提示。
以下版权声明必须遵守,转载时必须以链接的形式注明如下信息:
原载于 散人笔记
留言评论
称呼
邮箱
网址
  • kangre : 哦,没有接触过这类的错误,多谢博主的资料!