web-dev-qa-db-fra.com

Exemple de fonctionnement de la commande OpendaASource à l'aide de l'authentification SQL

Je dois exécuter des requêtes ad-hoc sur plusieurs centaines de serveurs qui ne font pas partie d'un domaine. Chaque serveur dispose d'un compte d'utilisateur SQL à faible privilège qui a enregistré un accès en lecture seule à quelques tables d'intérêt.

Mon idée était d'avoir les noms de ces serveurs stockés dans une table et d'utiliser cette table pour conduire une commande OpendaAsource ou OpenRowSet.

Les serveurs sont soit dans différents domaines, des domaines non approuvés, des groupes de travail, etc. un grand désordre.

Je ne peux pas pour la vie de moi trouver un exemple de la configuration de ces commandes pour utiliser une combinaison de compte/mot de passe SQL Server.

Remarque: cela se produit dans un bac à sable, ce n'est pas destiné au monde réel. C'est simplement une preuve de concept, la sécurité n'est donc pas une préoccupation majeure. Ces serveurs sont démontés par un processus qui simule une croissance réelle d'un réseau.

Pour le compte rendu, j'ai pu obtenir OpenRowset pour travailler:

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

Pour l'exécuter avec une connexion SQL, il suffit de spécifier l'ID utilisateur et le mot de passe de la chaîne de connexion (appelé "init chaîne" dans Bol )

SELECT
    * FROM
OPENDATASOURCE (
   'SQLNCLI', -- or SQLNCLI
   'Data Source=OtherServer\InstanceName;Catalog=RemoteDB;User ID=SQLLogin;Password=Secret;').RemoteDB.dbo.SomeTable
5
gbn