Domanda

Ho bisogno di eseguire alcuni query ad hoc su diverse centinaia di server che non fanno parte di un dominio. Ogni server dispone di un account utente di SQL con privilegi che ha accesso in sola lettura ai pochi tavoli di interesse.

La mia idea era quella di avere i nomi di questi server memorizzati in una tabella, e utilizzare quel tavolo per guidare un comando OPENDATASOURCE o OPENROWSET.

I server sono o in diversi domini, i domini non trusted, gruppi di lavoro, ecc Un gran casino.

Non posso per la vita di me trovare un esempio di come configurare questi comandi per utilizzare un account / combinazione di SQL Server password.

Nota: Questo accade in una sandbox, non è significato per il mondo reale. E 'semplicemente una prova di concetto, per cui la sicurezza non è una preoccupazione importante. Questi server sono gomito fuori da un processo che sta simulando una crescita del mondo reale di una rete.

Per la cronaca, sono stato in grado di ottenere OPENROWSET al lavoro:

SELECT *
FROM OPENROWSET('SQLNCLI',
   'DRIVER={SQL Server};SERVER=MyServer;UID=MyUserID;PWD=MyCleverPassword',
   'select @@ServerName')         
È stato utile?

Soluzione

Per eseguirlo con un accesso SQL, solo bisogno di specificare l'ID utente e la password nella stringa di connessione (chiamato "stringa di inizializzazione" in BOL )

SELECT
    * FROM
OPENDATASOURCE (
   'SQLNCLI', -- or SQLNCLI
   'Data Source=OtherServer\InstanceName;Catalog=RemoteDB;User ID=SQLLogin;Password=Secret;').RemoteDB.dbo.SomeTable
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top