• Just a thought, but for the clients that are using SQL Server (2005 or higher) you could perhaps use Service Broker?

    If you need to query one of your client's SQL Servers you simply begin a new conversation and send a message to the target (client SQL Server) where you specify what kind of inventory information you request. The target replies to your message with a new message that contains the information you requested.

    In that way you don't need to set up linked servers and risk granting to many privileges to the account used to authenticate to the linked server. The only thing your user (through the certificate) is allowed to do is send messages to the target server.

    For the non-SQL Server DBMS you need to find another solution, perhaps web services with a set of methods that corresponds to the contracts and message types you set up in the Service Broker solution.

    http://rusanu.com/articles/ has a lot of very good articles about Service Broker.