2017-04-05 1 views
0

Je voudrais écrire requêteSélectionnez externe via déclaration LOCATION

@result = 
    SELECT * //Id, Test 
    FROM EXTERNAL MyAzureSQLDBDataSource LOCATION "dbo.test" 
    WHERE Test NOT LIKE "_C"; 

Mais je suis arrivé une erreur:

C# error CS0103: The name 'Test' does not exist in the current context.

Si je cours requête sans instructions WHERE, tout fonctionne bien. Le même problème est dans SELECT, j'obtiens une erreur si j'utilise des noms de colonnes dans la requête au lieu de *

Une idée de pourquoi je ne peux pas utiliser la localisation et où l'instruction?

Répondre

2

Quelle est la définition de schéma de la table dbo.test?

Je suppose que la table dbo.test dans Azure SQLDB ne fournit pas la colonne Test ou est épelée dans un cas différent (notez que U-SQL est - contrairement à T-SQL - sensible à la casse).

+0

Le schéma est correct. Si j'exécute une requête via l'instruction d'exécution, tout fonctionne correctement. – peterko

+1

L'instruction EXECUTE envoie une instruction T-SQL. Je suppose que votre base de données est insensible à la casse, donc elle ne se soucie pas du boîtier. Mais U-SQL est sensible à la casse, de sorte qu'il peut obtenir les méta-données de la table dans un boîtier différent. Quel est le résultat de '@result = SELECT * À PARTIR DE MyAzureSQLDBDataSource LOCATION EXTERNE" dbo.test "ORDER BY" one "FETCH 1; OUTPUT @result À "\ output \ test.csv" À L'AIDE DE Outputters.Csv (outputHeader: true); '? –

+0

Merci, c'est mon cas. Vous avez raison, dans DB sont des colonnes définies en minuscules. – peterko