2017-09-20 6 views
1

Je suis nouveau à SSRS, je fais un rapport utilisé trois paramètres FromDimDateDateKey, ToDimDateDateKey et InstrumentSName, et j'ai eu l'erreur que l'exécution de la requête a échoué pour mon DataSet et requête (1,343) les restrictions imposées par le drapeau CONSTRAINED dans la fonction STRTOSET ont été violées. que devrais-je faire ? quelqu'un peut m'aider?SSRS - les restrictions imposées par le drapeau CONSTRAINED dans la fonction STRTOSET ont été violées

ceci est mon requête MDX:

SELECT 
NON EMPTY { [Measures].[Price] } ON COLUMNS, 
NON EMPTY { 
    (
     [DimDate].[Date Key].[Date Key].ALLMEMBERS * 
     [Dim Instrument].[Instrument Code].[Instrument Code].ALLMEMBERS * 
     [Dim Instrument].[Instrument S Name].[Instrument S Name].ALLMEMBERS 
    ) 
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_VALUE, MEMBER_UNIQUE_NAME ON ROWS 
FROM( 
    SELECT(
     STRTOSET(
      @DimInstrumentInstrumentSName, 
      CONSTRAINED 
     ) 
    ) ON COLUMNS 
    FROM(
     SELECT(
      STRTOMEMBER(@FromDimDateDateKey, CONSTRAINED): 
      STRTOMEMBER(@ToDimDateDateKey, CONSTRAINED) 
     ) ON COLUMNS 
     FROM [CUBE_SIAPDW] 
    ) 
) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 
+1

Qu'est-ce retour @DimInstrumentInstrumentSName? Avez-vous essayé: sélectionnez StrToSet (@DimInstrumentInstrumentSName) sur 0 à partir de [CUBE_SIAPDW]? Est-ce que ça marche? –

Répondre

1

Il vous dit que cela a échoué:

STRTOSET(
      @DimInstrumentInstrumentSName, 
      CONSTRAINED 
     ) 

Si vous cochez-la documentation strtoset: https://docs.microsoft.com/en-us/sql/mdx/strtoset-mdx

Il dit CONSTRAINED est optionnel et:

Lorsque l'indicateur CONSTRAINED est utilisé, la spécification set doit contenir noms de membres qualifiés ou non qualifiés ou un ensemble de tuples contenant noms de membres qualifiés ou non qualifiés entourés d'accolades {}. Ce drapeau est utilisé pour réduire le risque d'attaques par injection via la chaîne spécifiée. Si une chaîne n'est pas directement attribuable à noms de membres qualifiés ou non qualifiés, l'erreur suivante apparaît: "Les restrictions imposées par l'indicateur CONSTRAINED dans la fonction STRTOSET ont été enfreintes."

Ainsi, si vous utilisez contraint, le paramenter @DimInstrumentInstrumentSName devra être quelque chose comme ceci chaîne - noter les accolades:

'{[Geography].[Geography].[Country].[Germany],[Geography].[Geography].[Country].[Canada]}'