2010-09-01 6 views
0

Nous devons accéder à un serveur COM ATL personnalisé à partir de SQL Server 2008. Idéalement, nous souhaitons que le serveur COM vive sur une machine distincte car il fait partie d'une application logicielle plus importante. Je connais les procédures stockées d'automatisation COM/OLE fournies par SQL (sp_OAXXXX), mais elles ne semblent pas accepter un nom d'ordinateur/serveur pour l'appel distant.Programmation de serveur SQL Server 2008 et COM

Est-il possible d'y parvenir en utilisant des procédures stockées CLR basées sur C#? Y a-t-il d'autres approches? Nous avons également un wrapper java pour le serveur COM, donc les fichiers batch distants sont une option? Je cherche à avoir des nouvelles de quelqu'un qui aurait pu faire face à un problème similaire.

Merci, Sam

+2

C'est vraiment une mauvaise idée. Pardon. Pourquoi ne peut pas faire les choses COM ailleurs? – gbn

+0

Parce qu'il s'agit d'une application SSRS –

+0

Le wrapper Java ne fera pas partie de cette solution. J'ai enlevé le tag java. Aucune raison pour laquelle vous avez besoin de Java pour faire des fichiers batch distants, et aucune de ces technologies ne fonctionnera mieux avec Java que les autres. –

Répondre

0

Sur la piste de sp_OACreate, vous pouvez regrouper votre serveur COM dans COM + sur le serveur distant, puis exporter un proxy MSI, que vous pouvez installer sur votre SQL Server (également dans COM + et configurez les informations du serveur distant). De cette façon, vous pouvez atténuer les horreurs de DCOM. Mais comme pour les autres affiches, appeler des serveurs COM distants à partir de SQL serait un dernier recours.

+0

Architecturalement je suis d'accord en appelant le serveur COM à partir du serveur SQL est un mauvais coup. Mais mes mains sont liées. Je suis curieux d'entendre ce que vous/les autres avez à l'esprit lorsque vous découragez l'utilisation de COM à partir de SQL Server –

0

Voici une approche: vous pouvez créer un service Web SOAP, en utilisant WCF ou asmx, pour envelopper les interfaces du serveur COM. Créez un assembly CLR et ajoutez une référence Web pour le service Web à l'assembly. Vous pouvez ensuite appeler des méthodes sur le serveur COM en tant qu'appels de service Web. Vous devrez créer et exécuter votre assembly SQLCLR avec les autorisations EXTERNAL_ACCESS pour cela. L'avantage de cette approche est assez simple et il sera facile de configurer un cadre de test pour le service Web de manière indépendante.