Est-il possible de créer une table temporaire sur un serveur lié?
Je fais assez complexes des requêtes sur une distance de serveur lié, et il serait utile de pouvoir stocker de l'information dans des tables temporaires et ensuite effectuer des jointures contre elle - toutes les données à distance. Créer les tables temporaires localement et de se joindre à leur encontre sur le fil est trop lent.
Est-il possible de forcer la table temporaire sera créé sur le serveur distant? Supposons je n'ai pas de privilèges suffisants pour créer mon propre réel (permanente) des tables.
OriginalL'auteur Herb Caudill | 2010-02-05
Vous devez vous connecter pour publier un commentaire.
Il n'est pas possible de créer directement des tables temporaires sur des liens serveur distant. En fait, vous ne pouvez pas utiliser DDL sur un serveur lié.
Pour plus d'informations sur les lignes directrices et les limites de l'utilisation des serveurs liés, voir:
Un travail autour de (et sur le dessus de ma tête, et cela ne fonctionne que si vous avez eu les autorisations sur le serveur distant), vous pouvez:
Pas l'idéal, mais une manière de contourner.
OriginalL'auteur Kev
Cela fonctionne à partir de SQL 2005 SP3 lié à SQL 2005 SP3 dans mon environnement. Toutefois, si vous examinez la base de données tempdb, vous trouverez que la table est en fait sur l'instance locale et non l'instance distante. J'ai vu cela comme une résolution sur d'autres forums, et je voulais vous orienter à l'écart de ce.
OriginalL'auteur doug_w
Oui vous pouvez, mais il ne dure que pendant la durée de la connexion.
Vous devez utiliser les EXÉCUTER À la syntaxe;
Sur SERVER2 la suite de travailler (pendant 1 minute);
mais il ne fonctionne pas sur le serveur local.
Incidemment, si vous ouvrez une opération sur le second serveur qui utilise ##exemple de l'objet reste jusqu'à la clôture de l'opération. Il arrête également la création d'instruction sur le premier serveur à partir de la fin. c'est à dire sur server2 exécuter et la transaction sur server1 continuera indefinately.
C'est plus accademic que de l'utilisation pratique!
OriginalL'auteur Stuart
Si la mémoire n'est pas un problème, vous pouvez également utiliser les variables de table comme une alternative à des tables temporaires. Cela a fonctionné pour moi lors de l'exécution d'une procédure stockée avec le besoin de stockage temporaire des données sur un Serveur Lié.
Plus d'infos: par exemple cette comparaison de la table des variables et des tables temporaires, y compris les inconvénients de l'utilisation de la table des variables.
Il semble que vous pouvez créer un index sur la table des variables. (Ne le savais pas non plus!)
Super! Merci pour le partage. Je vais l'avoir à l'esprit dans l'avenir.
Malheureusement, je ne crois pas que cela fonctionne pour les serveurs liés, du moins pas avec execute.
OriginalL'auteur Josien
Je suis à 2 ans de retard à la fête, mais vous pouvez accomplir cela en utilisant
sp_executeSQL
et de la nourrir d'une requête dynamique pour créer la table à distance.Exec RemoteServer.RemoteDatabase.RemoteSchema.SP_ExecuteSQL N'Create Table here'
Exécute le temp de la création de la table à l'emplacement distant..
OriginalL'auteur Korey