我正在调用odbc32.dll(SQLBrowseConnect)来返回sql server上的数据库列表。
从运行跟踪我可以看到正在执行的查询是
select name from master..sysdatabases where has_dbaccess(name)=1
如果我传递的凭据不是sa用户,则只返回系统数据库。无论如何我可以使用SQLBrowseConnect与另一个用户(其默认数据库也不保证是主数据库)来返回服务器上的所有数据库吗?
我也想避免smo对象
答案 0 :(得分:1)
在我们的ETL工具中,我们使用SQLBrowseConnect来获取可用SQL服务器的列表。
我们不会用它来获取数据库列表
SQLExecDirect(FHSMT,PAnsiChar('按姓名从MASTER.dbo.sysdatabases中选择名称'),SQL_NTS)
我们对不同版本的SQL服务器使用不同的ODBC驱动程序。