Requête inter-bases de données : utilisation de liens serveur et OPENQUERY
Il existe de nombreuses façons d'accéder aux données de différentes bases de données, dont l'une consiste à utiliser des liens de serveur et OPENQUERY.
Lien du serveur
Pour connecter des bases de données sur différents serveurs, vous pouvez utiliser des procédures stockées sp_addlinkedserver
pour créer des liens de serveur. Cela vous permet d'accéder aux tables sur le serveur lié et d'exécuter des requêtes. Pour joindre des tables de différentes bases de données, ajoutez simplement le nom de la table avec le nom du serveur lié. Par exemple :
<code class="language-sql">SELECT * FROM [LinkedServerName].[DatabaseName].[SchemaName].[TableName]</code>
OUVERTURE
Vous pouvez également utiliser OPENQUERY pour exécuter à distance des instructions SQL et récupérer des données sans avoir à vous connecter en permanence au serveur. La syntaxe est la suivante :
<code class="language-sql">SELECT * FROM OPENQUERY([LinkedServerName], 'SELECT * FROM [DatabaseName].[SchemaName].[TableName]')</code>
OPENQUERY améliore les performances en permettant aux serveurs distants d'optimiser l'exécution des requêtes. De plus, il peut mettre en cache les résultats sous forme de table temporaire pour les requêtes ultérieures.
Exemple
Pour illustrer l'utilisation des liens de serveur et d'OPENQUERY, considérons le scénario de jonction de deux tables dans différentes bases de données sur des serveurs différents.
Méthode de liaison du serveur :
<code class="language-sql">SELECT * FROM [Database1].[dbo].[Table1] t1 INNER JOIN [LinkedServerName].[Database2].[dbo].[Table2] t2 ON t1.ID = t2.ID</code>
Méthode OPENQUERY :
<code class="language-sql">-- 从远程数据库获取数据 SELECT * INTO #TempTable FROM OPENQUERY([LinkedServerName], 'SELECT * FROM [Database2].[dbo].[Table2]') -- 将临时表与本地表连接 SELECT * FROM [Database1].[dbo].[Table1] t1 INNER JOIN #TempTable t2 ON t1.ID = t2.ID</code>
Le choix entre ces deux méthodes dépend de facteurs tels que la taille des données, la complexité des requêtes et les exigences de performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!