架构对象在 SQL Server Management Studio 2008 中不可见

发布于 2024-08-30 10:23:25 字数 508 浏览 4 评论 0原文

我在 SQL 登录时遇到一个奇怪的问题。当我使用此帐户连接到 Microsoft SQL Server Management Studio (2008) 中的服务器时,我看不到此帐户应有权访问特定数据库的任何表、存储过程等。

当我使用相同的帐户连接到 Visual Studio (2008) 中的同一服务器时,一切都在那里。当我在虚拟机上使用同一帐户连接时,一切都在那里。我还有一位同事使用相同的登录名连接到服务器,他也可以查看所有内容。

我整天使用 Microsoft SQL Server Management Studio 连接到不同的服务器和数据库,但从未遇到过此问题。

有人对我如何诊断这个问题有任何建议吗?

我已检查以确保我没有任何表过滤器等。

此服务器上有多个数据库,我可以很好地看到该帐户在其他数据库中可以访问的正确表。

运行此查询会列出我期望看到的表。

 SELECT * FROM INFORMATION_SCHEMA.TABLES

I'm experiencing a weird problem with a SQL login. When I connect to the server in Microsoft SQL Server Management Studio (2008) using this account, I cannot see any of the tables, stored procedures etc. that this account should have access to on a particular database.

When I connect to the same server within Visual Studio (2008) with the same account everything is there. When I connect with the same account on a Virtual Machine everything is there. I've also had a co-worker connect to the server using the same login and he's able to view everything as well.

I use Microsoft SQL Server Management Studio all day connecting to different servers and databases and I've never experienced this problem.

Does anyone have any suggestions on how I can diagnose this problem?

I've checked to make sure I don't have any Table filters etc.

There's several database on this server and I'm able to see the correct tables that this account has access to in the other databases just fine.

Running this query lists the tables I'm expecting to see.

 SELECT * FROM INFORMATION_SCHEMA.TABLES

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

枉心 2024-09-06 10:23:25

我已经解决了我的问题。这是一个错误... 以下是详细信息

这是 SMO 中的一个错误。我们计划在下一个主要版本 SQL11 中修复此问题。
这个bug实际上与模式无关,而是与表所有者有关。当我们尝试从 SMO 中的服务器获取表时,由于性能原因,我们尝试通过执行 INNER JOIN 一次性获取它们的所有者。因此,如果用户没有查看表所有者的权限,他就无法使用 SMO 查看表,这是一个错误。
因此,解决方法是向用户提供对表的所有所有者的查看权限。另一种方法是让该用户成为数据库的“安全管理员”,但随后该用户将获得许多额外的权限,因此不建议使用第二种解决方案。向用户提供表所有者的查看权限是更好的方法。

I've solved my problem. It's a bug... Here are the details

This is a bug in SMO. We are planning to fix this by next major release which will be SQL11.
This bug is actually not related to schemas at all but is related to the table owners. When we try to get the tables from the server in SMO, because of performance reasons we try to get their owners too in one go by doing an INNER JOIN. Hence, if the user doesn’t have permissions to view the table owners, he is not able to see the tables also using SMO which is a bug.
Hence the workaround for this is, provide view permissions to the user on all the owners of the table. Another way will be to make this user “security admin” of the database but then this user will get lots of additional privileges, hence second solution is not recommended. Providing view permissions on table-owners to the user is a better way.

烟花易冷人易散 2024-09-06 10:23:25

启动 SQL Profiler,然后刷新 SQLSMS 中的数据库列表,看看它用于列出数据库的查询是什么。

fire up SQL Profiler then refresh the database list in SQLSMS and see what the query is that it uses to list the databases.

看轻我的陪伴 2024-09-06 10:23:25

您可以重新启动sql管理来修复它。

you can restart sql management to fix it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文