2017-09-19 4 views
0

J'ai deux bases de données sur deux serveurs distincts. Il y a 1 table parent pour ces 2 bases de données qui se trouve sur un 3ème serveur. J'ai lié les serveurs afin que je puisse interroger la table parent à partir des bases de données enfants.Performances des serveurs SQL liés

Cependant, cela affecte énormément les performances.

Je me demande si quelqu'un pourrait m'aider sur la façon d'effectuer une requête sur un serveur distant sans compromettre les performances.

J'ai essayé d'afficher la table parente. J'ai également essayé de créer une variable de table temporaire pour exporter toutes les données distantes sur le serveur local.

Chacun d'eux aide une baisse mais pas assez.

Toutes les idées seraient grandement appréciées. Merci.

+0

Répliquer les données du parent aux enfants – UnhandledExcepSean

+0

Je ne veux pas avoir toute cette maintenance. Stocker la même information dans 3 endroits? Est-ce une bonne conception de base de données? – Diane

+0

Lorsque vous interrogez via un serveur lié, il essaie d'appliquer un prédicat sur le serveur distant (si vous avez un prédicat), mais ce n'est pas garanti. Vous devrez également minimiser les données transférées depuis le serveur distant ... vous pouvez poster votre requête avec quelques données de test, certains peuvent essayer d'appliquer un prédicat sur le serveur distant – TheGameiswar

Répondre

0

Parfois boostin les performances du serveur lié peut être acquise en utilisant openquery

Exemple:

SELECT * FROM OPENQUERY(LINKEDSERVER,'Select FirstName,LastName from 
DATABASENAME.SCHEMANAME.TABLENAME') 

Ce ne sont pas toujours plus performante, mais vous pouvez l'essayer.

+0

Merci pour votre réponse. Je ne veux pas avoir à coder en dur le serveur lié. Au cas où ça se changerait dans le futur ... – Diane