web-dev-qa-db-fra.com

Interroger un serveur SQL lié

J'ai ajouté un serveur lié, qui s'affiche dans la liste des serveurs liés, mais lorsque je l'interroge, il génère une erreur avec le nom du serveur db.

EXEC sp_helpserver
EXEC sp_addlinkedserver 'aa-db-dev01'
Select * from openquery('aa-db-dev01','Select * from TestDB.dbo.users')

Msg 102, niveau 15, état 1, ligne 1
Syntaxe incorrecte près de 'aa-db-dev01'.

23
Renju
SELECT * FROM [server].[database].[schema].[table]

Cela fonctionne pour moi. SSMS intellisense peut encore souligner cela comme une erreur de syntaxe, mais cela devrait fonctionner si votre serveur lié est configuré et que votre requête est par ailleurs correcte.

45
Andreas Niedermair

Vous devez supprimer les guillemets autour du nom du serveur lié. Cela devrait être comme ceci:

Sélectionnez * dans openquery (aa-db-dev01, 'Sélectionnez * dans TestDB.dbo.users')

24
BTB

Vous pouvez utiliser:

SELECT * FROM [aa-db-dev01].[TestDB].[dbo].[users];
6
Guoliang

J'utilise une requête ouverte pour effectuer cette tâche comme suit:

select top 1 *
INTO [DATABASE_TO_INSERT_INTO].[dbo].[TABLE_TO_SELECT_INTO]
from openquery(
    [LINKED_SERVER_NAME],
    'select * from [DATABASE_ON_LINKED_SERVER].[dbo].[TABLE_TO_SELECT_FROM]'
)

L'exemple ci-dessus utilise une requête ouverte pour sélectionner des données d'une base de données sur un serveur lié dans une base de données de votre choix.

Remarque: Pour l'exhaustivité de la référence, vous pouvez effectuer une sélection simple comme ceci:

select top 1 * from openquery(
    [LINKED_SERVER_NAME],
    'select * from [DATABASE_ON_LINKED_SERVER].[dbo].[TABLE_TO_SELECT_FROM]'
)
3
user1477388

essayez Select * from openquery("aa-db-dev01",'Select * from users'), la connexion à la base de données doit être définie dans la configuration du serveur lié

2
UV.

La réponse acceptée fonctionne pour moi.

De plus, dans MSSQLMS, vous pouvez parcourir l'arborescence de l'Explorateur d'objets jusqu'à la table que vous souhaitez interroger.

[Serveur] -> Objets serveur -> Serveurs liés -> [Serveur lié] -> Catalogues -> [Base de données] -> [table]

puis clic droit, Script Table as, SELECT To, New Query Window

Et la requête sera générée pour vous avec le bon FROM, que vous pouvez utiliser dans votre JOIN

1
Ryano