请问这个错误是什么回事?

蓋茨 2009-05-16 09:37:32
不知道给我搞了什么操作,结果下次开机,用vb编好的程序执行到OPEN TABLE(EXEC sp_helprotect '数据库1', '用户1') (当然里面那些中文字实际上不是中文字的,解释而已),就报错“多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。”

在sql2005里面新建查询执行,则返回信息:

消息 15330,级别 11,状态 1,过程 sp_helprotect,第 291 行
没有要报告的匹配行。

上网查过,全部都解释是:引起这个问题的原因简单的说就是数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数。

但很明显,我又不是执行插入、修改等对表字段操作的语句,只是查询用户对表所拥有的权限。

执行 EXEC sp_helprotect null,null,dbo 没问题
执行 EXEC sp_helprotect null,null,'用户1' 报同样错误

消息 15330,级别 11,状态 1,过程 sp_helprotect,第 291 行
没有要报告的匹配行。

搞了一个晚上都找不出原因来,甚至将以前的整个SQL文件夹备份也覆盖了,还是不行。

请各位指教,这个问题解决不了,我的编程工作便无法进行了~ 我使用的是SQL2005。谢谢各位。
...全文
232 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓋茨 2009-05-17
  • 打赏
  • 举报
回复
这里有篇英文的问题解释,谁能大致解释一下,不要机器翻译,解决了马上给分了

http://www.mssqltips.com/tip.asp?tip=1653
蓋茨 2009-05-17
  • 打赏
  • 举报
回复
啊~果然可以了啊~
为什么那样写以前又行,突然又不行的...难道我设置了2个'用户1',后来删了一个?
SQL77 2009-05-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 SQL77 的回复:]
SQL codeEXEC sp_helprotect null,null,dbo



SQL codeEXEC sp_helprotect null,'用户名,dbo


中间的那个是被授权的名字,后面那个是向指定的被授权限用户进行授权的用户的名称。
理解了!!
[/Quote]
EXEC  sp_helprotect  null,'用户名',dbo
SQL77 2009-05-17
  • 打赏
  • 举报
回复
EXEC  sp_helprotect  null,null,dbo 

EXEC  sp_helprotect  null,'用户名,dbo

中间的那个是被授权的名字,后面那个是向指定的被授权限用户进行授权的用户的名称。
理解了!!
SQL77 2009-05-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 claro 的回复:]
引用楼主 CZHGates 的帖子:
执行 EXEC sp_helprotect null,null,dbo 没问题
当然没有问题,数据库默认为dbo用户。

SQL codeEXEC sp_helprotect @grantorname = 'dbo'
等价于
EXEC sp_helprotect null,null,dbo
--try?
EXEC sp_helprotect NULL, '用户1'
[/Quote]

兄弟正确!!!
是返回其权限的安全帐户名称
[@username =] 'security_account'

是返回其权限的安全帐户名称。security_account 的数据类型为 sysname,默认值为 NULL,这个默认值将返回当前数据库中所有的安全帐户。security_account 必须是当前数据库中的有效安全帐户。当指定 Microsoft® Windows NT® 用户时,请指定该 Windows NT 用户在数据库中可被识别的名称(用 sp_grantdbaccess 添加)。
claro 2009-05-17
  • 打赏
  • 举报
回复
--给出上面的查询结果
--windows身份验证登录,执行以下语句:
SELECT s.name [Schema]
, USER_NAME(dp.grantee_principal_id) [User]
, permission_name
, state_desc from sys.server_permissions dp JOIN sys.schemas s ON dp.major_id = s.schema_id
WHERE s.name='用户1'


claro 2009-05-17
  • 打赏
  • 举报
回复
SELECT  
s.name [Schema]
, USER_NAME(dp.grantee_principal_id) [User]
, permission_name
, state_desc
FROM sys.database_permissions dp
JOIN sys.schemas s ON dp.major_id = s.schema_id
WHERE s.name='用户1'
claro 2009-05-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 CZHGates 的帖子:]
执行 EXEC sp_helprotect null,null,dbo 没问题
[/Quote]当然没有问题,数据库默认为dbo用户。
EXEC sp_helprotect @grantorname = 'dbo'
等价于
EXEC sp_helprotect null,null,dbo
--try?
EXEC sp_helprotect NULL, '用户1'

claro 2009-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 duanzhi1984 的回复:]
帮顶!!!
[/Quote]
SQL77 2009-05-16
  • 打赏
  • 举报
回复

[@grantorname =] 'grantor'

是已授权的安全帐户的名称。grantor 的数据类型为 sysname,默认值为 NULL,这个默认值将返回数据库中任何安全帐户所授权限的所有信息。当指定 Windows NT 用户时,请指定该 Windows NT 用户在数据库中可被识别的名称(用 sp_grantdbaccess 添加)。


执行 EXEC sp_helprotect null,null,'用户1'??是否是授权的帐户名称,再试试其他用户
Zoezs 2009-05-16
  • 打赏
  • 举报
回复
gz
zhengduan964532 2009-05-16
  • 打赏
  • 举报
回复
关注没遇到过这样问题!!!
duanzhi1984 2009-05-16
  • 打赏
  • 举报
回复
帮顶!!!
蓋茨 2009-05-16
  • 打赏
  • 举报
回复
sys不可以,我自己建立的2个账户也不可以,dbo可以,其他的没试过

MSDN上解释说:There are no matching rows on which to report.

是什么原因呢?
蓋茨 2009-05-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 SQL77 的回复:]
SQL code
[@grantorname =] 'grantor'

是已授权的安全帐户的名称。grantor 的数据类型为 sysname,默认值为 NULL,这个默认值将返回数据库中任何安全帐户所授权限的所有信息。当指定 Windows NT 用户时,请指定该 Windows NT 用户在数据库中可被识别的名称(用 sp_grantdbaccess 添加)。




执行 EXEC sp_helprotect null,null,'用户1'??是否是授权的帐户名称,再试试其他用户
[/Quote]

dbo可以,其他我自己建立的2个都不可以

以前可以的,不知道我搞了什么操作后就报错了...

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧