J'ai utilisé un serveur lié avec l'ancien fournisseur (SQLNCLI) sans aucun problème, comme recommandé par Microsoft , je prévois de passer au nouveau fournisseur (msoledbsql). Je suis capable d'ajouter un serveur lié à l'aide de T-SQL après l'installation les pilotes
EXEC sp_addlinkedserver
@server=N'SQL02\DEV1',
@srvproduct=N'',
@provider=N'MSOLEDBSQL',
@datasrc=N'SQL02,1933';
Malheureusement, obtenez l'erreur suivante lorsque j'essaie d'interroger un nouveau serveur lié:
Requêtes que j'ai essayé:
--- example 1
select * from OPENQUERY ([SQL02\DEV1], 'select name from sys.databases');
--- example 2
select name from [SQL02\DEV1].master.sys.databases;
--- example 3 (without linked server dependency)
SELECT c.* FROM OPENROWSET(
'MSOLEDBSQL'
, 'Server=SQL02,1933;Database=master;Integrated Security=True;'
, 'SELECT name FROM sys.databases;'
) c;
Obtenir la même erreur de tous les exemples:
Utilisation hors traitement de OLE DB fournisseur "msoledbsql" avec SQL Server n'est pas prise en charge.
Cela signifie-t-il vraiment SQL-2016 n'est pas pris en charge pour l'utilisation de nouveaux fournisseurs MSOLEDBSQL, en particulier dans des serveurs liés, ou existe-t-il quelque chose que j'ai manqué autre que réinstaller les pilotes et redémarrer le serveur SQL.
OLE DB était non préparé et publié en 2018 en tant que msoledbsql. Les versions antérieures (et toujours obsolètes) sont SQLOLEDB ou SQLNCLI.
Comme vous utilisez SQL Server 2016, votre serveur n'a probablement pas installé MSOLEDBSQL. Vous devrez l'installer sur le serveur avant de pouvoir l'utiliser sur un serveur lié.
Plus d'informations, y compris un lien de téléchargement, est disponible dans The Docs .