Je souhaite accéder aux données d'une base de données Oracle 11g à partir de SQL-Server 2008
J'installe un serveur lié et quand j'exécute
select * from [Link_server_name]..Oracle_schema.Oracle_table
et Oracle_table contient les colonnes Number et varchar2, tous fonctionnent comme excepté.
Mais lorsque Oracle_table contient une colonne CLOB, j'obtiens l'erreur suivante:
Der OLE DB-Anbieter «MSDAORA» für den Verbindungsserver «L_V407SR8T» hat die Meldung «Unspecified error» zurückgeben.
Der OLE DB-Anbieter 'MSDAORA' für den Verbindungsserver 'L_V407SR8T' hat die Meldung 'Une erreur Oracle s'est produite, mais le message d'erreur n'a pas pu être récupéré d'Oracle.' zurückgeben.
Der OLE DB-Anbieter 'MSDAORA' für den Verbindungsserver 'L_V407SR8T' hat die Meldung 'Le type de données n'est pas pris en charge.' zurückgeben.
Msg 7306, niveau 16, état 2, ligne 1
Die '"MCCAPP". "DOGGRUPPEN"' - Tabelle vom OLE DB-Anbieter 'MSDAORA' für den Verbindungsserver 'L_V407SR8T' kann nicht geöffnet werden.
Utiliser OPENQUERY
SELECT * FROM OPENQUERY([L_V407SR8T], 'Select CLOB_COLUMN from Oracle_table' )
Je reçois
Der OLE DB-Anbieter 'MSDAORA' für den Verbindungsserver 'L_V407SR8T' hat die Meldung 'Une erreur Oracle s'est produite, mais le message d'erreur n'a pas pu être récupéré d'Oracle.' zurückgeben. Der OLE DB-Anbieter 'MSDAORA' für den Verbindungsserver 'L_V407SR8T' hat die Meldung 'Le type de données n'est pas pris en charge.' zurückgeben.
Veuillez excuser les messages d'erreur allemands.
Ma question: existe-t-il un moyen de lire les colonnes CLOB via des serveurs liés?
ÉDITER:
- L'Assistant Importation et Exportation SQL Server semble également dépendre d'OLE DB et aspire les mêmes tables
- Je me demande si le problème dépend des utilisations des jeux de caractères, mais je ne peux pas les changer
- Comme travail pratique, j'utilise certains scripts PowerShell pour obtenir les données, mais
la source
Réponses:
Téléchargez et installez un client de base de données Oracle 11 sur votre machine SQL Server 2008.
Configurez un serveur lié à l'aide d'un fournisseur Oracle OLE DB (OraOLEDB.Oracle).
Assurez-vous que «Autoriser InProcess» est activé dans les options du fournisseur.
Le client Oracle 11 OLE DB prend en charge les CLOB.
la source
Un commentaire à une réponse SO question Comment lire une colonne CLOB dans Oracle en utilisant OleDb?
contient un lien vers l'ancien article du support Microsoft avec la déclaration suivante
Ce serait bien de trouver des références plus actuelles.
J'ai fait quelques recherches sur Google et n'ai trouvé que des solutions de contournement. Je crains que le type de données ne soit toujours pas pris en charge.
Modifier le 02/05/2011
Je ne comprends vraiment pas pourquoi Microsoft n'est pas en mesure de résoudre ce problème. Le script PowerShell suivant utilise OLE-DB pour lire une table contenant une colonne CLOB à partir d'une base de données Oracle et insérer les données dans une table similaire existante sur Sql-Server à l'aide de bulkCopy qui est un moyen très efficace.
Ajustez les chaînes de connexion, la requête et le nom de table suivants à votre installation:
Le code suivant copie la table Oracle dans une table SQL Server
BTW: le code est basé sur le projet codeplex Chad Millers Really Simple Data Dictionary
Actuellement, l'utilisation de PowerShell est le seul moyen que je connaisse pour copier des données avec des CLOB d'Oracle vers Sql-Server sans utiliser C # ou tout autre outil tiers.
Je n'ai pas réussi à utiliser ni l'assistant d'importation / exportation ni les serveurs liés.
la source
No new updates are planned for future releases of these components including their support against versions later than Oracle 8i.