J'ai 3 serveurs SQL et j'obtiens un comportement étrange avec OpenRowset.
Compte tenu de ce qui précède :
- Serveur 1 = 192.168.1.1,
- Serveur 2 = 192.168.1.2,
- Serveur 3 = 192.168.1.3,
- Serveur 4 = 192.168.1.4
SQL :
SELECT a.*
FROM OPENROWSET('SQLOLEDB',
'Data Source=192.168.1.1;Persist Security
Info=True;uid=sa;pwd=password',
'SELECT * FROM dfs_database.dbo.dfs_vehicledata ') AS a;
Voici ce qui est étrange : si j'exécute l'instruction SQL ci-dessus sur les serveurs .3 et .4, tout fonctionne correctement.
Cependant, si j'exécute l'instruction SQL sur le serveur .2, j'obtiens :
Le fournisseur OLE DB "SQLNCLI11" pour le serveur lié "(null)" a renvoyé le message "Deferred prepare could not be completed".
Msg 8180, Niveau 16, État 1, Ligne 7
La (les) déclaration(s) n'a (n'ont) pas pu être préparée(s).Msg 208, Niveau 16, État 1, Ligne 7
Le nom de l'objet 'dfs_database.dbo.dfs_vehicledata' n'est pas valide.
Qu'est-ce qui fait qu'une relation ne fonctionne pas alors que les autres fonctionnent bien ? Vous avez des idées ? Il s'agit de SQL Server express, et tous ont des fournisseurs SQLNCLI11.