获取用户有权访问的数据库列表

Dan*_*elR 10 sql-server

我有一个带有几个数据库的SQL Server 2008实例,我正在编写一个C#应用程序来访问这些数据库.在此应用程序中,最终用户可以选择他们想要连接的数据库.

我已经有了服务器上所有数据库的列表,如何将该列表限制为用户可以登录的数据库?或者,我该如何查询该列表?

有很多数据库,但每个用户只能访问其中的一些,因此尝试连接和捕获异常可能不是一个好主意.

Fyi:服务器仅配置为Windows身份验证,并且为Windows用户组(而非单个用户)创建了到服务器的登录.

And*_*mar 23

您可以从中查询所有数据库sys.sysdatabases,并检查用户是否具有HAS_DBACCESS访问权限:

SELECT name
FROM sys.sysdatabases
WHERE HAS_DBACCESS(name) = 1
Run Code Online (Sandbox Code Playgroud)