2016-11-07 1 views
1

J'ai un ensemble d'instructions SQL utilisant l'option distribuée d'Invantive SQL qui extrait les informations de marchandises expédiées d'Exact Online et crée pour chaque numéro de série expédié un ticket dans Freshdesk, ensemble avec le consommateur en tant que contact.Choisir une division différente d'Exact Online lors de l'utilisation de requêtes distribuées avec Invantive SQL

Cela fonctionne correctement lorsqu'il est connecté à Exact Online et Freshdesk sous un même code de connexion. Toutefois, l'utilisateur final utilise un code de connexion différent. Dans ce cas, l'ensemble d'instructions SQL récupère les données de leur division de test dans Exact Online au lieu de la division de production correcte.

Lorsque vous utilisez aucune option distribuée, je peux changer la division en utilisant:

use 123123 

123123 est le numéro de division unique dans le pays en ligne Exact.

Lorsque vous êtes connecté à la fois à ligne et Freshdesk exacte, je reçois:

itgenuse002: List of partitions could not be determined. 

Comment puis-je appliquer que l'ensemble des instructions SQL est exécutée pour une spécifique exacte division en ligne au lieu de la valeur par défaut d'un ensemble à ce moment pour le code de connexion?

exemple de requête SQL qui montre le problème:

create or replace table [email protected] --STAP 1. 
as 
select acad.id 
,  acad.name 
,  acad.phone 
,  acad.email 
,  acad.addressline1 || ' ' || acad.postcode || ' ' || acad.city fulladdress 
from [email protected] acad 
where acad.status = 'C' 

Répondre

2

La déclaration use indiqué est valable pour les bases de données avec exactement un conteneur de données. Dans ce cas, il n'y a qu'un seul conteneur de données qui peut gérer la question et tout se passe bien.

Avec une requête distribuée dans Invantive SQL, vous devez diriger l'instruction use sur le conteneur de données à utiliser. Sinon, le premier conteneur de données essaiera de le manipuler (dans ce cas probablement Freshdesk qui n'a pas de concept de partitionnement). Qui est semblable à l'alias de annexant conteneur de données à chaque table comme dans:

select ... 
from [email protected] 
join [email protected] 
on  ... 

Ici eolnl et freshdesk préciser où les tables doivent regardé.

Ainsi, dans ce cas, utilisez:

use [email protected] 

est de même aussi pour la déclaration set.

0

À partir de votre code, il semble que vous avez plusieurs conteneurs de données en cours d'exécution dans votre connexion. Depuis l'interface utilisateur, vous pouvez uniquement définir les partitions sur le conteneur de données par défaut.

Cependant, il existe une solution de code facile à utiliser. Vous devez connaître l'alias du conteneur de données pour lequel vous souhaitez définir la partition. L'utilisation que alias dans un appel (dans cet exemple 123123 est la partition que vous voulez choisir) use:

use [email protected] 

Ou utiliser toutes les partitions disponibles:

use [email protected]