Question

Je dois courir sur plusieurs centaines de serveurs qui ne font pas partie d'un domaine une requêtes ad-hoc. Chaque serveur a un faible privilège compte utilisateur SQL qui a 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 utiliser cette table pour conduire une commande OPENDATASOURCE ou OPENROWSET.

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

Je ne peux pas pour la vie de me trouver un exemple de la façon de configurer ces commandes pour utiliser un compte SQL Server / combinaison de mot de passe.

Note: Ceci se produit dans un bac à sable, il n'est pas pour le monde réel. Il est tout simplement une preuve de concept, de sorte que la sécurité n'est pas une préoccupation majeure. Ces serveurs sont coudés par un processus qui simule une croissance dans le monde réel d'un réseau.

Pour mémoire, j'ai pu obtenir OPENROWSET au travail:

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

La solution

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

SELECT
    * FROM
OPENDATASOURCE (
   'SQLNCLI', -- or SQLNCLI
   'Data Source=OtherServer\InstanceName;Catalog=RemoteDB;User ID=SQLLogin;Password=Secret;').RemoteDB.dbo.SomeTable
Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top