我正在调用odbc32.dll(SQLBrowseConnect)来返回sql server上的数据库列表。
从运行跟踪我可以看到正在执行的查询是
select name from master..sysdatabases where has_dbaccess(name)=1
如果我传递的凭据不是sa用户,则只返回系统数据库。无论如何我可以使用SQLBrowseConnect与另一个用户(其默认数据库也不保证是主数据库)来返回服务器上的所有数据库吗?
我也想避免smo对象
答案 0 :(得分:0)
该查询无需sysadmin凭据即可运行。
您需要确保您/您使用的凭据至少位于您需要连接的每个数据库的public database role。
正如您所猜测的那样,从master..sysdatabases中选择名称将返回所有数据库名称,而不管您对数据库的访问权限。