SQL Server 2012 - Insérer dans la table de serveur lié à l'aide de la fonction openquery
J'ai un serveur lié Remoteserver
contenant une table qui tient noms de fichiers et dossiers à partir d'un dir
Quand je suis sur le serveur distant, je peux exécuter un construit dans la procédure (xp_dirtree
) et de remplir les 'fichiers' table, mais ce dont j'ai besoin pour faire est d'exécuter une requête à partir du serveur SQL local qui fait cela:
- Supprimer tous les enregistrements de la
[Files]
table surRemoteserver
- Insérer des données qui proviennent de la procédure stockée:
INSERT [Remoteserver].[dbo].[files] (subdirectory,depth,isfile) EXEC master.sys.xp_dirtree '\\Fileserver\DBBackup',1,1;
- Sélectionnez le 'répertoire' colonne
J'ai essayé quelques choses à l'aide de la fonction openquery et je suis en mesure de sélectionner les enregistrements existants, mais incapable de le faire l'insertion.
Toute aide est appréciée.
"impossible" - ce que cela signifie?
pouvez-vous inclure le message d'erreur que vous obtenez? il me semble que le nom de votre table est en manque une partie. Pour être valide requête à distance, il doit avoir quatre parties: Serveurdistant.dbname.dbo.fichiers par exemple
Pour être honnête, je ne suis pas tout à fait sûr de la bonne syntaxe à utiliser. J'ai essayé quelques variantes de la openquery mais je suis sûr qu'ils ne sont pas droit parce qu'ils n'ont pas fonctionné :)...de toute façon la télécommande nom de la table est comme suit:[Remoteserver].[dbo].[files]....Pour clarifier, je n'ai pas besoin d'extraire les données dans un tableau existant sur le localserver...j'ai Juste besoin de l'afficher sur une application web, donc tout ce qui doit arriver doit arriver à distance...la seule chose qui se passe localement est la openquery qui affiche les données de la remoteserver "fichiers" de la table
montrez-nous ce que vous avez essayé jusqu'à présent?
INSÉREZ OPENQUERY([Remoteserver], ' SELECT id,sous-répertoire,de la profondeur,isfile DE [Remoteserver].[dbo].[fichiers] ' ) VALUES ('EXEC maître.sys.xp_dirtree "\\serveur de fichiers\DBBackup",1,1')
pouvez-vous inclure le message d'erreur que vous obtenez? il me semble que le nom de votre table est en manque une partie. Pour être valide requête à distance, il doit avoir quatre parties: Serveurdistant.dbname.dbo.fichiers par exemple
Pour être honnête, je ne suis pas tout à fait sûr de la bonne syntaxe à utiliser. J'ai essayé quelques variantes de la openquery mais je suis sûr qu'ils ne sont pas droit parce qu'ils n'ont pas fonctionné :)...de toute façon la télécommande nom de la table est comme suit:[Remoteserver].[dbo].[files]....Pour clarifier, je n'ai pas besoin d'extraire les données dans un tableau existant sur le localserver...j'ai Juste besoin de l'afficher sur une application web, donc tout ce qui doit arriver doit arriver à distance...la seule chose qui se passe localement est la openquery qui affiche les données de la remoteserver "fichiers" de la table
montrez-nous ce que vous avez essayé jusqu'à présent?
INSÉREZ OPENQUERY([Remoteserver], ' SELECT id,sous-répertoire,de la profondeur,isfile DE [Remoteserver].[dbo].[fichiers] ' ) VALUES ('EXEC maître.sys.xp_dirtree "\\serveur de fichiers\DBBackup",1,1')
OriginalL'auteur Kiran | 2015-01-09
Vous devez vous connecter pour publier un commentaire.
Essayer cette
OU
Mais en général, vous n'avez pas besoin d'utiliser la fonction OPENQUERY si
Fileserver
etRemoteserver
sont accessibles à partir de la machine locale.pas du tout. si vous allez utiliser
OPENQUERY
il pourrait être n'importe quel autre serveur qui est configuré en tant que serveur lié, mais cela peut nécessiter laMSDTC
être activé sur chaque serveur (à vérifier stackoverflow.com/questions/27726567/...)merci pour le lien...j'ai une question de suivi liées à la ci-dessus afin de la poser ici.... J'ai 3 commandes dans ma procédure stockée - d'abord on supprime tous les enregistrements d'une table , la deuxième permet d'insérer de nouveaux enregistrements et troisième tirer de ces documents mais au moment de l'exécution de la requête delete fonctionne, mais je n'obtiens pas les enregistrements à partir de la 3ème déclaration dont il est le "select" ....Je suis incapable de poster le code ici, car il est trop long pour le bloc de commentaire.
elle est mauvaise. pour l'instant je ne peux pas vous aider sans aucune information sur les détails du problème. et assurez-vous de discuter de votre problème ici est certainement hors sujet... vous pouvez essayer de le comprendre, ou vous pourriez vous poser une nouvelle question...
ok pour poser une nouvelle question , c'est probablement plus facile 🙂
OriginalL'auteur Andrey Morozov