2009-09-17 5 views
2

Nous essayons de nous connecter à une instance SQL Server utilisée par le système ACT CRM. Ils ont réussi à verrouiller les choses de sorte qu'il n'est pas possible de se connecter au backend SQL en utilisant ODBC (il y a un utilitaire spécial qui ajoutera le support ODBC que vous pouvez installer si vous achetez la version primo du logiciel, mais c'est juste fou).Connectez-vous à la source de données OLEDB à partir de Java?

La méthode recommandée de connexion à ces bases de données utilise une connexion OLEDB.

Est-ce que quelqu'un a des astuces/idées/etc ... pour savoir comment créer et utiliser une connexion OLEDB à partir de Java?

Cela ne doit pas nécessairement être JDBC si cela n'est pas possible. Tout ce que nous avons vraiment besoin de faire est d'exécuter une requête SELECT qui renvoie deux champs et d'analyser ces valeurs de champ pour chaque ligne. J'ai très peu d'expérience avec OLEDB, donc 'utiliser JACOB' pourrait être une bonne réponse, mais j'apprécierais quelques détails sur ce que les appels COM devraient réellement être.

+1

Pourquoi ne pas simplement utiliser le pilote Microsoft JDBC de type 4 (natif)? –

+0

Je vais essayer (je préfère jtds, moi-même) - mais les identifiants de connexion ne fonctionnent pas (l'authentification native ne fonctionne pas, et mettre manuellement le nom d'utilisateur et le mot de passe ne fonctionne pas non plus). Aussi près que je peux dire, Act a le login complètement verrouillé sur la base de données, sauf via la connexion OLEDB. Je ne comprends pas cela, moi-même (SQL est SQL, non?) Et je n'ai pas accès au serveur physique, mais tous les résultats de Google indiquent que c'est effectivement la situation. –

Répondre

1

je sais que c'est vieux, mais il pourrait aider quelqu'un de savoir comment je l'ai fait

je l'ai décrit plus en détail comment le faire Here.

0

Java ne peut pas accéder directement à OLEDB. Vous devez le faire dans une autre langue comme C++ ou C#. Ensuite, vous pouvez accéder via JNI ou un processus externe. Si vous ne voulez pas écrire la partie native de JNI self, vous pouvez utiliser JACOB comme vous le suggérez. Mais je pense qu'un processus externe prendre la demande semble être plus simple.

0

Deux façons de résoudre ce problème.

  1. Spawn de java un proc externe (C#, C++, etc.) qui se connecte à l'aide sqlsrv OLEDB et rediriger le stdin, stdout et stderr à votre programme java.
  2. Créez un écouteur C# sur un port particulier et faites passer java toutes les requêtes via un client à cet écouteur.
1

Ce n'est pas votre problème. Le problème est la façon dont ils ont verrouillé le serveur. Fondamentalement, au démarrage, il recherche des connexions autres que ACTUSER et les supprime.

Vous pouvez le débloquer assez facilement, alors vous pourrez vous connecter de la manière habituelle.

https://serverfault.com/questions/77712/sqlserver-need-to-access-an-act-database-for-data-migration

J'ai réussi à débloquer la mienne, mais j'oublier à quel point ... Je pense que je l'ai commencé en mode mono-utilisateur, puis a fait des choses amusantes impliquant une procédure stockée déchiffrer dans la base de données maître et l'éditer pour enlever cette "fonctionnalité". Cela impliquait à son tour d'utiliser SQLTrace pour voir les commandes envoyées par ACT.

Je vous suggère de demander sur Server Fault.

Questions connexes