现在的位置: 首页 > 综合 > 正文

迷失的错误:服务器能过户 ‘user_a’ 不是数据库’database_b’中的有效用户

2013年10月09日 ⁄ 综合 ⁄ 共 1099字 ⁄ 字号 评论关闭

错误代码:

Failed to retrieve data for this request.
(Microsoft.SqlServer.Management.Sdk.Sfc)
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch.
(Microsoft.SqlServer.ConnectionInfo)
Server user 'user_a' is not a valid user in database 'database_b'.
(Microsoft SQL Server, Error: 916)

 

 

服务器能过户 'user_a' 不是数据库'database_b'中的有效用户。(Microsoft SQL Server, Error: 916)

 

今天帮人改个程序,在连数据库的时候居然发生了以上的错误。

觉得很可笑,连接到服务器上后,点开数据库项的时候出现了上述的错误。

用户user_a想访问的数据库是database_a,居然却访问到了database_b,因为没有访问权限被拒绝了。

这个问题是发生在尝试list服务器上的数据库时。

记得以前打开其他空间提供商中的数据库,也能列出所有数据库,包括自己不能访问的。(找到原因后,想想估计那时使用的是 sql server 2005的管理工具。)

 

纳闷了很久后,在http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-tools/4171/SQL-Server-Management-Studio-2008-Express-failed-to-retrieve中找到了线索,然后从 http://sqlblog.com/blogs/aaron_bertrand/archive/2008/07/07/a-little-management-studio-oops.aspx中更深入了解了原因。

 

原来是sql server 2008的management studio在list数据库时默认读取的一个选项"Collation
"在作怪,list数据库就要读取各个数据库的某些属性信息,而读取这个"Collation"属性就需要用户有对数据库的访问权限。否则就会报错。

 

那么我们只要调出对象详细信息浏览(Object Explorer Details)窗口,没有打开时,按F7键可以呼出这个界面,然后在列表中的表头按右键,将Collation项去掉。问题就解决了。

 

这个问题估计MS开始没有预料到,在下一个 pitch中估计会fix。毕竟是个小问题,无伤大雅。

抱歉!评论已关闭.