Astronomie

Tenter de déterminer des valeurs d'astronomie dans un fichier de paramètres

Tenter de déterminer des valeurs d'astronomie dans un fichier de paramètres


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Récemment, j'ai hérité de quelques anciens programmes QuickBasic qui effectuent divers calculs astronomiques. J'essaie de comprendre ces programmes et de réécrire certains d'entre eux en Python. Je n'ai pas une formation approfondie en astronomie.

Un certain nombre de programmes prennent en entrée un fichier de paramètres, YEAR.DAT. Vous trouverez ci-dessous 5 ans de ces fichiers (chaque colonne représente un fichier). J'ai besoin d'aide pour déterminer les différentes valeurs de données.

ANNÉE.DAT

année 2001 2008 2009 2010 2011 delta t 66 65 66 66 67 inclinaison 23.43909 23.43818 23.43805 23.43799 23.43786 dow 1 2 4 5 6 tps 6.71430 6.66860 6.71839 6.702509 6.68659 x1 105.690 330.340 310.959 291.631 272.303 bs 84 90 88 87 86 fs 301 300 298 304 304 357,765 356,959 357,689 357,433 357,177 x3 354,289 193,159 335,720 105,105 234,489 jd 2451910,5 2454466,5 2454832,5 2455197,5 2455562,5

Je crois que toutes les valeurs qui dépendent du temps sont pour 0:00 heures le 1er janvier de l'année donnée.

Voici les valeurs que je pense avoir compris :

tilt est l'obilquité de l'écliptique dow est le jour de la semaine, où lundi est le jour 1 bs est le numéro du jour de l'année où l'heure d'été britannique (BST) commence fs est le numéro du jour de l'année où BST extrémités jd est le nombre de jours juliens (de 0h00 le 1er janvier)

Valeurs dont je ne suis pas sûr :

delta t est une sorte de delta de temps, mais je ne sais pas quel gst semble être le temps sidéral moyen de Greenwich, mais pour quel moment ? x1, x2 et x3 je n'en ai aucune idée

Voici mes questions :

  1. Quel pourrait être le delta t ?
  2. La TPS est-elle en fait le temps sidéral moyen de Greenwich ? Pour quel moment ?
  3. Que sont x1, x2 et x3 ? (Ceci est une question de faible priorité.)
  4. Comment peut-on déterminer delta t, gst, et peut-être d'autres valeurs pour 2018, 2019,… ?

Toute aide sera fortement appréciée.

Maison Roger


Dépannage des problèmes de définition de rapport

La première étape pour résoudre un problème de rapport consiste à identifier la cause sous-jacente. Cette rubrique décrit les problèmes courants qui peuvent survenir lors de la définition d'un rapport Microsoft Dynamics AX. Pour obtenir des informations de dépannage sur les rapports SQL Server Reporting Services, consultez Dépannage des problèmes de rapport.

Le tableau suivant fournit des conseils pour vous aider à déterminer la cause de votre problème de rapport.

Informations supplémentaires pour le dépannage

Le rapport est rompu pour une raison quelconque et la source de données est une requête.

Exécutez la requête en dehors du rapport. Confirmez que la requête renvoie les résultats attendus. Utilisez un formulaire, une tâche ou des services de requête pour tester la requête. Pour plus d'informations, consultez Service de requête.

Le rapport est rompu et la source de données est une classe de fournisseur de données de rapport (RDP).

Lorsque vous affichez un aperçu du rapport, vous recevez l'erreur suivante :

Aucune table de données de rapport avec le nom <dataset table name> n'existe dans le schéma de rapport pour le fournisseur de données <RDP name>.

Vérifiez que le rapport est lié aux tables existantes et ne lient pas plusieurs ensembles de données à une seule classe de fournisseur de données de rapport. Au lieu de cela, définissez le rapport pour que les multiples tables pointent vers le même ensemble de données.

Aucune donnée n'a été renvoyée dans le rapport.

Vérifiez que vous avez la bonne entreprise, que des données sont saisies pour cette entreprise et que l'utilisateur a accès aux données attendues.

Le rapport a une erreur de rendu. Lorsque vous essayez d'exécuter le rapport, vous recevez une erreur semblable à la suivante :

Une erreur s'est produite lors du traitement du rapport.

Le mot de passe du compte d'exécution SSRS est peut-être invalide.

Du Démarrer menu, pointez sur Tous les programmes, clique le Serveur Microsoft SQL dossier, cliquez sur le Outils de configuration dossier, puis cliquez sur Gestionnaire de configuration des services de rapports.

Dans Gestionnaire de configuration des services de rapports, Cliquez sur Relier puis cliquez Compte d'exécution.

Définissez le mot de passe, puis cliquez sur Appliquer. Le compte et le mot de passe doivent être les mêmes que le compte proxy Microsoft Dynamics AX. Pour plus d'informations, consultez Avant d'installer les extensions Reporting Services.

Clique le Nom du serveur/MSSQLSERVER puis cliquez Arrêter. Puis clique Démarrer pour redémarrer le serveur. Vérifiez toujours auprès de l'administrateur SQL et assurez-vous qu'aucun autre utilisateur n'est connecté au serveur avant de redémarrer le serveur.

Les libellés du rapport ne s'affichent pas ou le rapport affiche les ID des libellés, comme Libellés [email protected] au lieu des valeurs des libellés.

Le mot de passe du compte de service SSRS est peut-être invalide.

Du Démarrer menu, pointez sur Tous les programmes, clique le serveur SQL dossier, cliquez sur le Outils de configuration dossier, puis cliquez sur Gestionnaire de configuration des services de rapports.

Dans le Gestionnaire de configuration de Reporting Services, cliquez sur Relier puis cliquez Compte de service.

Définissez le mot de passe, puis cliquez sur Appliquer. Le compte et le mot de passe doivent être les mêmes que le compte proxy Microsoft Dynamics AX. Pour plus d'informations, consultez Avant d'installer les extensions Reporting Services.

Clique le Nom du serveur/MSSQLSERVER puis cliquez Arrêter. Puis clique Démarrer pour redémarrer le serveur. Vérifiez toujours auprès de l'administrateur SQL et assurez-vous qu'aucun autre utilisateur n'est connecté au serveur avant de redémarrer le serveur.

Lors de l'exécution d'un rapport qui utilise une valeur d'énumération en tant que paramètre à plusieurs valeurs d'un rapport, vous obtenez une erreur semblable à la suivante :

Il manque une valeur au paramètre 'ParameterName'.

Met le Type de données propriété du paramètre d'énumération à Entier.

En effet, la valeur d'étiquette des éléments d'énumération est convertie en valeurs de nom dans la méthode SrsReportDataContractUIBuilder.getMultiSelectFromDialogField.

Lors de la création d'un projet de rapport qui utilise une source de données de rapport SQL, vous recevez l'erreur suivante :

Le rapport n'a pas le paramètre de cadre obligatoire AX_ReportContext.

Créez manuellement le paramètre de rapport AX_ReportContext. Pour plus d'informations, consultez Procédure pas à pas : création d'un rapport avec des paramètres.

Les valeurs temporelles d'un rapport lié à une requête AOT sont affichées sous la forme h:mm:ss tt dans l'aperçu de Visual Studio et le client Microsoft Dynamics AX au lieu de l'heure réelle.

Sélectionnez le champ dans la conception du rapport et définissez les propriétés suivantes :

Expression propriété à =Microsoft.Dynamics.Framework.Reports.BuiltInMethods.ConvertAXTimeToDateTime(Fields!timefield.Value)

Chaîne de formatage propriété à hh:mm:ss

Un message d'erreur de connexion AOS indique que vous ne pouvez pas établir de connexion à l'AOS.

Pour supprimer, renommer, enregistrer ou restaurer un élément de modèle de rapport, vous devez disposer d'une connexion au serveur d'objets d'application (AOS). Si l'AOS est déconnecté ou s'arrête de fonctionner après l'ouverture d'un projet de rapport, un message d'erreur de connexion AOS s'affichera. Pour continuer, redémarrez ou restaurez la connexion à l'AOS, puis répétez la commande qui a échoué.

La commande Annuler ne fonctionne pas dans le modèle de rapport.

Dans l'éditeur de modèle, seules les commandes non enregistrées peuvent être annulées. Une fois qu'une commande est enregistrée, elle ne peut pas être annulée à l'aide de la commande Annuler. Pour annuler une commande enregistrée, vous devez modifier manuellement l'élément de rapport. Si vous utilisez le contrôle du code source, une autre option consiste à supprimer le fichier extrait si aucune autre modification n'a été apportée.

La personnalisation du modèle de rapport enregistré n'est pas visible dans l'Explorateur d'applications.

L'explorateur d'applications ne s'actualise pas automatiquement lorsque l'éditeur de modèle enregistre les modifications dans la base de données du magasin de modèles. Pour afficher les modifications dans l'explorateur d'applications, cliquez avec le bouton droit sur l'élément de modèle, puis cliquez sur Rafraîchir.

La personnalisation du modèle de rapport enregistré n'est pas visible dans l'AOT.

L'AOT ne s'actualise pas automatiquement lorsque l'éditeur de modèle enregistre les modifications dans la base de données du magasin de modèles. Pour afficher les modifications dans l'AOT, dans l'espace de travail de développement Outils menu, cliquez sur Outils de développement, Objets applicatifs, et alors Actualiser les données du modèle d'exécution.

Lors de la prévisualisation d'un rapport dans Visual Studio, vous recevez l'erreur suivante :

Il manque une valeur %1 au paramètre %0

Vérifiez que vous n'avez pas créé de rapport avec une expression Libellés dans le Valeurs propriété du paramètre de rapport. Cela n'est pas pris en charge car Reporting Services résout les étiquettes de paramètres après l'évaluation et l'exécution des paramètres.

Vérifiez que vous n'avez pas défini le Autoriser le vide propriété à Vrai pour rendre le paramètre facultatif. Ceci n'est pas pris en charge pour les paramètres liés à l'ensemble de données par le cadre de création de rapports. Les éléments suivants identifient les approches alternatives pour les rapports OLTP et OLAP :

Rapports OLTP - utilisez un type de données étendu (EDT) pour ajouter une variable de chaîne de valeur nulle à la liste déroulante par défaut. Lors de l'exécution du rapport, vous pouvez définir la valeur du paramètre sur NULL en ne sélectionnant rien dans la liste déroulante.

Rapports OLAP – ajouter une valeur Tout à la liste déroulante pour indiquer qu'aucun filtrage n'est à faire par le paramètre.

La requête pour le rapport a été modifiée, mais le rapport ne reflète pas la modification.

Après avoir exécuté le rapport, la requête et les plages sont mises en cache dans la table SRSReportQuery. Pour actualiser le cache, vous devez supprimer manuellement tous les enregistrements de la table SRSReportQuery pour tous les rapports ou paramètres de rapport qui utilisent la requête qui a été modifiée.

Le verrouillage ou le masquage d'une plage pour un paramètre de rapport ne fonctionne pas. A l'exécution, le paramètre est activé et l'utilisateur peut filtrer sur la plage. Cela se produit lorsqu'un rapport est lié à une requête qui a une valeur de plage avec un Statut valeur de la propriété Locked ou Hidden.

SQL Server Reporting Services n'honore pas la plage de requêtes Statut propriété.

le Étiqueter référence ne s'affiche pas correctement. le Valeur La propriété est définie sur le paramètre Parameters!MyParm.Value.

Le paramètre doit être explicitement lié aux données à l'aide d'un ensemble de données dans le modèle de rapport Visual Studio Tools pour Microsoft Dynamics AX.

Le paramètre est explicitement lié aux ensembles de données avec deux colonnes, label et value. La valeur s'affiche correctement. le Étiqueter référence s'affiche correctement partout sauf dans le client.

Le contrôle de la visionneuse de rapports ne prend pas en charge la possibilité de spécifier des étiquettes de paramètres de rapport, uniquement des valeurs.

Lorsque vous générez un projet Visual Basic pour un rapport, le projet n'est pas généré.

Vous recevez l'erreur "L'assembly de logique métier ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null ne contient pas de classe pour le rapport Report1".

Vous devez effacer le paramètre d'espace de noms du projet Visual Basic. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis cliquez sur Propriétés. Dans le Application zone, supprimez le texte dans la Espace de noms racine domaine.

Dans Visual Studio, vous créez un projet et recevez l'erreur « System.InvalidOperationException : l'objet est actuellement utilisé ailleurs ».

Cette erreur indique un problème de synchronisation. Fermez la solution, puis recréez le rapport.

Lorsque vous déboguez une méthode de données C#, le serveur SQL Server Reporting Services se bloque.

Il s'agit d'un problème connu si vous déboguez une méthode de données C# sur une machine qui exécute un système d'exploitation 64 bits. Pour contourner ce problème, ouvrez Visual Studio 2008, chargez le fichier C#, définissez le point d'arrêt, puis attachez-le au processus Reporting Services. Pour plus d'informations, consultez Débogage du code managé dans Microsoft Dynamics AX.

Les rapports qui s'exécutent pendant plus de dix minutes expirent. Par example:

Si vous affichez un aperçu d'un rapport dans Visual Studio et qu'un délai d'attente se produit, vous recevrez l'erreur suivante :

Une erreur de délai d'attente s'est produite lors de l'appel du service AOS. Utilisez l'utilitaire de configuration du client Dynamics AX pour modifier les valeurs de configuration WCF. Détails de l'exception : le canal de demande a expiré en attendant une réponse après 00:00:59.9449945. Augmentez la valeur de délai d'attente transmise à l'appel à Request ou augmentez la valeur SendTimeout sur la liaison. Le temps alloué à cette opération peut avoir été une partie d'un délai d'attente plus long.

Si un utilisateur essaie d'afficher un rapport dans le client Microsoft Dynamics AX et qu'un délai d'attente se produit, l'utilisateur recevra l'erreur suivante dans l'InfoLog :

Une tentative de connexion a échoué car la partie connectée n'a pas répondu correctement après un certain temps, ou la connexion établie a échoué car l'hôte connecté n'a pas répondu.

Des erreurs sont générées lorsque les rapports sont enregistrés dans un fichier, imprimés sur une imprimante ou envoyés par courrier électronique.

Afficher les messages d'erreur détaillés enregistrés pour le Rapports module dans le Exceptions forme. Cliquez sur L'administration du système > Périodique > Cadre d'intégration des services et des applications > Exceptions.

Le même rapport contient des informations différentes lorsqu'il est enregistré dans différents formats de fichier.

Par exemple, un rapport de facture de vente enregistré dans un fichier .HTML peut contenir des informations d'en-tête, des éléments de ligne et des totaux. Lorsque le même rapport est enregistré dans un fichier .XML, il peut ne contenir que les éléments de ligne et les totaux.

C'est par conception. Pour plus d'informations sur le rendu des rapports dans les formats de fichier disponibles, consultez Exportation de rapports (Générateur de rapports 3.0 et SSRS) dans la documentation SQL Server.

Les utilisateurs reçoivent l'erreur suivante lorsqu'ils cliquent sur un lien d'exploration amont sur un rapport dans Enterprise Portal :

[CompanyName] n'est pas une entreprise valide. Vérifiez la valeur et réessayez.

Cette situation peut se produire lorsque Reporting Services 2008 ou Reporting Services 2008 R2 s'exécute en mode intégré SharePoint. Pour résoudre ce problème, installez Reporting Services 2008 R2 avec le Service Pack 2.

Le mode intégré SharePoint est pris en charge si vous utilisez Microsoft Dynamics AX 2012 R2 ou une version ultérieure.

Les tableaux ne sont pas alignés correctement lors de l'affichage des rapports dans les langues de droite à gauche (RTL).

Il s'agit d'un problème connu avec le contrôle de tableau matriciel de Reporting Services. Pour plus d'informations sur le problème, voir Problème connu : problèmes d'espacement des conceptions Dynamic Precision dans les langages RTL dans le blog Microsoft Dynamics AX Business Intelligence.

Les extensions Reporting Services deviennent inutilisables lorsque des instances Reporting Services supplémentaires sont installées sur le même ordinateur. Par conséquent:

Les rapports ne peuvent pas être déployés.

Les rapports ne peuvent pas être affichés.

Pour résoudre ce problème, configurez toutes les instances de Reporting Services sur l'ordinateur. Pour plus d'informations sur l'installation et la configuration de plusieurs instances de Reporting Services sur le même ordinateur, consultez Installer plusieurs instances de Reporting Services sur le même ordinateur (à utiliser avec Microsoft Dynamics AX).

Lors de l'impression d'un rapport qui a été enregistré en tant que fichier PDF, la taille de la page de l'imprimante ne correspond pas à la taille de la page PDF.

Pour résoudre ce problème, sélectionnez le Choisir la source de papier selon le format PDF case à cocher dans le Imprimer fenêtre qui s'affiche lors de l'impression du rapport sur l'imprimante.

Lorsque vous utilisez un environnement qui inclut un équilibreur de charge matérielle, tel que F5, les rapports qui s'exécutent pendant plus de cinq minutes expirent.

Pour résoudre ce problème, ajustez le délai d'expiration spécifié dans l'équilibreur de charge matérielle. Par exemple, si vous utilisez F5, définissez le Délai d'inactivité champ à 7200 secondes ou plus. Pour plus d'informations, consultez la base de connaissances F5.


Propriétés de construction du serveur

Les propriétés système peuvent être référencées à l'aide de %system.propertyName% .

Nom de la variable d'environnement

La version du serveur TeamCity. Cette propriété peut être utilisée pour déterminer si la génération est exécutée dans TeamCity.

Le nom du projet auquel appartient la construction actuelle.

Le nom de la configuration de build à laquelle appartient le build actuel.

L'ID unique utilisé par TeamCity pour référencer la configuration de build à laquelle appartient le build actuel.

Le nom complet (y compris le chemin) du fichier contenant toutes les propriétés de construction par ordre alphabétique.

Est défini sur true s'il s'agit d'un build personnel. N'est pas défini autrement.

Le numéro de build attribué à la build par TeamCity à l'aide du format de numéro de build. La propriété est attribuée en fonction du format du numéro de build.

L'ID unique interne utilisé par TeamCity pour référencer les builds.

Un nom d'utilisateur généré qui peut être utilisé pour télécharger des artefacts d'autres configurations de build. Valable uniquement pendant la construction. (Lire plus de détails).

Un mot de passe généré qui peut être utilisé pour télécharger des artefacts d'autres configurations de build. Valable uniquement pendant la construction. (Lire plus de détails).

La dernière révision VCS incluse dans le build pour la racine identifiée. Voir Configurer les racines VCS pour la description <VCS root ID>. S'il n'y a qu'une seule racine dans la configuration, la propriété build.vcs.number (sans l'ID racine VCS) est également fournie.

Notez que cette valeur est spécifique à VCS (par exemple, pour SVN, la valeur est un numéro de révision tandis que pour CVS, il s'agit d'un horodatage).


Comment optimiser les hyperparamètres

Recherche de grille

Il s'agit d'une méthode traditionnelle largement utilisée qui effectue un réglage des hyperparamètres pour déterminer les valeurs optimales pour un modèle donné.

La recherche par grille fonctionne en essayant toutes les combinaisons possibles de paramètres que vous souhaitez essayer dans votre modèle. Cela signifie qu'il faudra beaucoup de temps pour effectuer l'intégralité de la recherche, ce qui peut devenir très coûteux en temps de calcul.

Vous pouvez en savoir plus sur la mise en œuvre de la recherche de grille ici.

Recherche aléatoire

Cette méthode fonctionne un peu différemment : Aléatoire des combinaisons des valeurs des hyperparamètres sont utilisées pour trouver la meilleure solution pour le modèle construit.

L'inconvénient de la recherche aléatoire est qu'elle peut parfois manquer des points (valeurs) importants dans l'espace de recherche.

Vous pouvez en savoir plus sur la mise en œuvre de la recherche aléatoire ici.


Paramètres de la base de données

Voici quelques paramètres qui peuvent être réglés pour obtenir des performances optimales en fonction de votre système et de votre charge de travail.

Tampon_partagé

Le tampon PostgreSQL est appelé shared_buffer et est le paramètre ajustable le plus efficace pour la plupart des systèmes d'exploitation. Ce paramètre définit la quantité de mémoire dédiée qui sera utilisée par PostgreSQL pour le cache.

La valeur par défaut de shared_buffer est définie très bas, et vous n'en tirerez pas beaucoup d'avantages. Il est défini sur un niveau bas car certaines machines et systèmes d'exploitation ne prennent pas en charge des valeurs plus élevées. Mais dans la plupart des machines modernes, vous devez augmenter cette valeur pour des performances optimales.

Si vous disposez d'un serveur de base de données dédié avec 1 Go ou plus de RAM, une valeur de départ raisonnable pour shared_buffers est de 25 % de la mémoire de votre système. Vous devriez essayer des valeurs inférieures et supérieures, car dans certains cas, pour obtenir des performances optimales, vous avez besoin d'un réglage supérieur à 25 %. La plage utile pour shared_buffers sur les systèmes Windows est généralement de 64 Mo à 512 Mo. La configuration dépend de votre machine, de l'ensemble de données de travail et de la charge de travail sur votre machine.

Dans les environnements de production, il est observé qu'une valeur élevée pour shared_buffer donne de très bonnes performances, bien que vous deviez toujours comparer pour trouver le bon équilibre.

Wal_buffers

PostgreSQL écrit son enregistrement WAL (journal d'écriture anticipée) dans les tampons, puis ces tampons sont vidés sur le disque. La taille par défaut du tampon, définie par wal_buffers, est de 16 Mo, mais si vous avez plusieurs connexions simultanées, une valeur plus élevée peut donner de meilleures performances.

Effective_cache_size

Le paramètre effective_cache_size fournit une estimation de la mémoire disponible pour la mise en cache du disque. Il ne s'agit que d'une directive, pas de la taille exacte de la mémoire allouée ou du cache. Il n'alloue pas de mémoire réelle mais indique à l'optimiseur la quantité de cache disponible dans le noyau. Ceci est pris en compte dans les estimations du coût d'utilisation d'un index. Une valeur plus élevée augmente la probabilité d'utiliser des balayages d'index, tandis qu'une valeur inférieure augmente la probabilité d'utiliser des balayages séquentiels. Si la valeur est trop faible, le planificateur de requêtes peut décider de ne pas utiliser certains index, même s'ils seraient utiles. Il faut également tenir compte du nombre attendu de requêtes simultanées sur différentes tables, puisqu'elles devront partager l'espace disponible. Par conséquent, la définition d'une valeur élevée est toujours bénéfique.

Jetons un coup d'œil à quelques implications pratiques de effective_cache_size.

Exemple

Comme vous pouvez le voir, les coûts de cette requête sont estimés à 39,97 points de pénalité.

Que se passe-t-il si nous modifions effective_cache_size en une valeur incroyablement élevée ?

Comme vous pouvez le voir, les coûts baissent considérablement. Cela a du sens, car nous ne nous attendons pas à ce que le noyau mette en cache des données si nous n'avons que 1 Mo de RAM, cependant, nous pouvons nous attendre à ce que le taux de réussite du cache du côté du noyau augmente considérablement si nous nous attendons à ce que les données soient mises en cache par le système d'exploitation. Les E/S aléatoires sont la chose la plus chère, et la modification de ce paramètre de coût a de sérieux impacts sur ce que pense le planificateur. Imaginez une requête plus complexe : des estimations de coûts différentes peuvent conduire à des plans totalement différents.

Travail_mem

Cette configuration est utilisée pour les tris complexes. Si vous avez un tri complexe à faire, augmentez la valeur de work_mem pour de bons résultats. Les tris en mémoire sont beaucoup plus rapides que les tris se déversant sur le disque. La définition d'une valeur très élevée peut entraîner un goulot d'étranglement de la mémoire pour votre environnement de déploiement car ce paramètre est une opération de tri par utilisateur. Par conséquent, si de nombreux utilisateurs tentent d'exécuter des opérations de tri, le système allouera work_mem * opérations de tri totales pour tous les utilisateurs. La définition globale de ce paramètre peut entraîner une utilisation très élevée de la mémoire. Il est donc fortement recommandé de modifier cela au niveau de la session.

Exemple

Le nœud de tri de la requête initiale a un coût estimé de 514431,86. Un coût est une unité arbitraire de calcul. Pour la requête ci-dessus, nous avons un work_mem de seulement 2 Mo. À des fins de test, augmentons cela à 256 Mo et voyons s'il y a un impact sur les coûts.

Le coût de la requête est réduit de 514431,86 à 360617.36, soit une réduction de 30 %.

Maintenance_work_mem

Le paramètre maintenance_work_mem est un paramètre de mémoire utilisé pour les tâches de maintenance. La valeur par défaut est de 64 Mo. La définition d'une valeur élevée aide dans des tâches telles que VACUUM, RESTORE, CREATE INDEX, ADD FOREIGN KEY et ALTER TABLE.

Exemple

Le temps de création de l'index est de 170091.371 ms lorsque maintenance_work_mem est défini sur seulement 10 Mo, mais il est réduit à 111274.903 ms lorsque nous augmentons le paramètre maintenance_work_mem à 256 Mo.

Sync_commit

Ceci est utilisé pour imposer que la validation attendra que le WAL soit écrit sur le disque avant de renvoyer un statut de réussite au client. Il s'agit d'un compromis entre performances et fiabilité. Si votre application est conçue pour que les performances soient plus importantes que la fiabilité, vous devez désactiver synchronous_commit. Avec synchronous_commit désactivé, il y aura un intervalle de temps entre le statut de réussite et une écriture garantie sur le disque. Dans le cas d'un plantage du serveur, des données peuvent être perdues, même si le client a reçu un message de réussite lors de la validation. Dans ce cas, une transaction s'engage très rapidement car elle n'attend pas le vidage d'un fichier WAL, mais la fiabilité est compromise.

Max_connexions

Ce paramètre fait exactement ce que vous pensez : définit le nombre maximum de connexions actuelles. Si vous atteignez la limite, vous ne pourrez plus vous connecter au serveur. Chaque connexion occupe des ressources, le nombre ne doit donc pas être trop élevé. Si vous avez des sessions de longue durée, vous devrez probablement utiliser un nombre plus élevé que si les sessions sont pour la plupart de courte durée. Restez aligné avec la configuration pour le regroupement de connexions.

Max_transactions_préparées

Lorsque vous utilisez des transactions préparées, vous devez définir ce paramètre au moins égal au nombre de max_connections, afin que chaque connexion puisse avoir au moins une transaction préparée. Vous devriez consulter la documentation de votre ORM (Object-Relational-Mapper) préféré pour voir s'il existe des astuces spéciales à ce sujet.

Max_worker_processes

Définissez-le sur le nombre de processeurs que vous souhaitez partager pour PostgreSQL exclusivement. Il s'agit du nombre de processus d'arrière-plan que le moteur de base de données peut utiliser. La définition de ce paramètre nécessitera un redémarrage du serveur. La valeur par défaut est 8.

Lors de l'exécution d'un serveur de secours, vous devez définir ce paramètre sur la même valeur ou sur une valeur supérieure à celle du serveur maître. Sinon, les requêtes ne seront pas autorisées sur le serveur de secours.

Max_parallel_workers_per_gather

Le nombre maximal de nœuds de calcul qu'un nœud Gather ou GatherMerge peut utiliser. Ce paramètre doit être défini sur max_worker_processes. Lorsque le nœud Gather est atteint pendant l'exécution de la requête, le processus qui implémente la session de l'utilisateur demandera un nombre de processus de travail en arrière-plan égal au nombre de travailleurs choisis par le planificateur. Le nombre de travailleurs en arrière-plan que le planificateur envisage d'utiliser est limité à max_parallel_workers_per_gather ou inférieur. Le nombre total de travailleurs en arrière-plan pouvant exister à un moment donné est limité à la fois par max_worker_processes et max_parallel_workers. Par conséquent, il est possible qu'une requête parallèle s'exécute avec moins de travailleurs que prévu, voire sans aucun travailleur. Le plan optimal peut dépendre du nombre de nœuds de calcul disponibles, ce qui peut entraîner des performances de requête médiocres.

Si cette occurrence est fréquente, envisagez d'augmenter max_worker_processes et max_parallel_workers afin que plus de travailleurs puissent être exécutés simultanément ou de réduire max_parallel_workers_per_gather afin que le planificateur demande moins de travailleurs.

Max_parallel_workers

Nombre maximal de processus de travail en parallèle pour les requêtes parallèles. Identique à max_worker_processes. La valeur par défaut est 8.

Notez qu'un paramètre pour cette valeur qui est supérieur à max_worker_processes n'aura aucun effet, car les travailleurs parallèles sont extraits du pool de processus de travail établi par ce paramètre.

Effective_io_concurrency

Le nombre d'opérations d'E/S simultanées réelles prises en charge par le sous-système d'E/S. Comme point de départ : avec des disques durs simples, essayez de régler sur 2, avec des SSD, optez pour 200, et si vous avez un SAN puissant, vous pouvez commencer avec 300.

Random_page_cost

Ce facteur indique essentiellement au planificateur de requêtes PostgreSQL combien il est plus (ou moins) cher d'accéder à une page aléatoire que de faire un accès séquentiel. Avec les SSD ou les SAN puissants, cela ne semble pas si pertinent, mais c'était à l'époque des disques durs traditionnels. Pour les SSD ou les SAN, commencez par 1.1, pour les anciens disques simples, réglez-le sur 4.

Min_ et max_wal_size

Ces paramètres définissent des limites de taille sur le journal des transactions de PostgreSQL. Fondamentalement, il s'agit de la quantité de données qui peuvent être écrites jusqu'à ce qu'un point de contrôle soit émis, qui à son tour synchronise les données en mémoire avec les données sur disque.

Max_fsm_pages

Cette option permet de contrôler la carte de l'espace libre. Lorsqu'un élément est supprimé d'une table, il n'est pas immédiatement supprimé du disque. Il est simplement marqué comme "libre" dans la carte de l'espace libre. Cet espace peut ensuite être réutilisé pour tout nouveau INSERT que vous faites sur la table. Si votre configuration a un taux élevé de DELETE et d'INSERT, il peut être nécessaire d'augmenter cette valeur pour éviter le gonflement de la table.


5 - Problèmes avec la planification intégrée

5.1 - Condition d'exception UNKNOWN_IOBJ déclenchée

  • L'erreur se produit lors du transfert des données de planification :
    • Vous avez modifié les données de planification et appuyez sur le bouton "Recalculer" (pour les instances).

    5.2 - Le bouton Enregistrer du ruban AO n'est pas actif

    Vous exécutez une fonction de planification ou une séquence de planification dans l'onglet composant du panneau de conception AO. Ensuite, le bouton SAVE ne devient pas actif.

    Cela fonctionne comme prévu. Veuillez noter que les actions dans l'onglet composant ne sont pas censées affecter les éléments du ruban AO.

    Vous devez effectuer une action sur la feuille afin de fournir des informations indiquant que de nouvelles données sont disponibles pour le ruban.

    Cela peut être fait des manières suivantes :

    Actualiser le classeur après avoir exécuté les séquences de planification

    Ajoutez une requête en tant que fournisseur de données au classeur, puis exécutez la séquence de planification.

    Cliquez quelque part dans la feuille. Cela mettrait à jour tous les éléments du ruban.

    Utilisez l'API VBA pour déclencher la séquence de planification via le bouton.

    5.3 - Variables hiérarchiques dans Planning

    Dans une fonction de planification ou une séquence de planification, vous disposez d'une variable de hiérarchie.

    Vous éditez la valeur de cette variable, exécutez la fonction/séquence de planification et ensuite la valeur de la variable de hiérarchie est vide.

    La valeur de la variable de hiérarchie peut également disparaître lors de l'enregistrement du classeur.

    5.4 - Comprendre le comportement du tampon de planification lors du retraitement de l'écran d'invite

    • Une requête/classeur est exécuté avec une sélection de variable A.
    • Les données A sont saisies dans des cellules de chiffre clé prêtes pour la saisie.
    • L'écran d'invite est rappelé, une sélection variable B est appliquée.
    • Les données B sont entrées dans des cellules de chiffre clé prêtes à l'entrée.
    • Le tampon de planification contient les DONNÉES "A" et "B".

    5.5 - L'utilisation de l'API SAP SAPSetPlanParameter échoue / renvoie 0

    • Avec cette méthode API, vous pouvez définir des valeurs de variable pour les variables prêtes à l'entrée des objets de planification.
    • Cela ne fonctionne pas si "Cell" est mantianed comme référence source.

    5.6 - Comprendre la valeur de retour de la fonction de planification ou de la séquence de planification

    Une fonction/séquence de planification est exécutée avec l'API.

    Exemple : Application.Run("SAPEExecutePlanningFunction", "PF_1").

    Même la fonction/séquence de planification se termine avec des erreurs (par exemple, RSPLF-xxx), la valeur de retour est toujours 1 (exécution réussie).

    "Exécution réussie" dans ce contexte signifie qu'il n'y a eu aucun problème technique avec l'exécution elle-même qui est en effet indépendante de tout autre problème que la logique pourrait causer ou rencontrer.

    Ainsi, même la fonction/séquence de planification a des erreurs, elle a été déclenchée avec succès par AO, la valeur de retour doit être définie sur 1 (exécution réussie).

    Lisez KBA 1942970 pour trouver des informations sur la façon d'améliorer le code VBA pour lire les erreurs de fonction de planification/séquence.


    Le problème peut être irréparable

    Si vous obtenez toujours l'erreur « le paramètre est incorrect » après le formatage du lecteur, il est probable que le périphérique de stockage soit définitivement endommagé. Si tel est le cas, l'appareil ne peut être ni réparé ni utilisé.

    Vous pouvez essayer de récupérer vos fichiers à partir de la clé USB endommagée. Nous avons également un guide complet sur l'extraction de fichiers à partir d'un disque dur mort. Consultez-les et faites-nous savoir si vous avez besoin d'aide.

    Sodiq a écrit des milliers de tutoriels, guides et explicatifs au cours des 4 dernières années pour aider les gens à résoudre les problèmes avec les appareils Android, iOS, Mac et Windows. Il aime également passer en revue les produits technologiques grand public (smartphones, appareils domestiques intelligents, accessoires, etc.) et regarder des séries humoristiques pendant son temps libre. Lire la biographie complète de Sodiq


    Localisation d'images à l'aide de paramètres

    Jetons d'abord un coup d'œil aux options dont vous disposez pour rechercher des images spécifiques. Ci-dessous, nous avons un certain nombre de conseils exclusifs pour les images sur votre PC.

    Si vous connaissez les dimensions de l'image, vous pouvez saisir largeur : x, hauteur : x. Remplacez simplement « x » par les dimensions exactes.

    Si vous ne connaissez pas les dimensions exactes, mais que vous savez qu'elles sont dans une certaine limite, vous pouvez utiliser à la place les paramètres de recherche suivants :

    • Largeur : >x pour les fichiers sur une largeur spécifique
    • Largeur : <x pour les fichiers sous une largeur spécifique
    • Hauteur : >x pour les fichiers sur une hauteur spécifique
    • Hauteur : <x pour les fichiers sous une hauteur spécifique

    Remplacez simplement le « x » par la résolution que vous recherchez. Vous pouvez combiner l'un ou l'autre des paramètres de hauteur et de largeur.

    Si vous connaissez le type de fichier, vous pouvez également filtrer les recherches par extension de fichier. Par exemple, vous pouvez taper 'type: .png' dans la barre de recherche pour n'afficher que les images .png.

    Donc, dans cet esprit, si vous savez que vous avez créé une image avec une hauteur de plus de 1000 et une largeur de plus de 800, et que vous savez qu'il s'agit d'un fichier .png, vous pouvez effectuer une recherche comme l'image ci-dessous.


    Grompp

    Trouvé un deuxième fichier de directives par défaut

    Cela est dû au fait que la directive [defaults] apparaît plus d'une fois dans les fichiers de topologie ou de champ de force pour le système - elle ne peut apparaître qu'une seule fois. Une cause typique de ceci est une deuxième valeur par défaut définie dans un fichier de topologie inclus, .itp, qui provient d'un autre endroit. Pour les spécifications sur le fonctionnement des fichiers de topologie, reportez-vous au manuel GROMACS, section 5.6.

    Une solution consiste simplement à commenter (ou supprimer) les lignes de code dans le fichier où il est inclus pour la deuxième fois, c'est-à-dire

    Une meilleure approche pour trouver une solution est de repenser ce que vous faites. The [defaults] directive should only be appearing at the top of your .top file where you choose the force field. If you are trying to mix two force fields, then you are asking for trouble. If a molecule .itp file tries to choose a force field, then whoever produced it is asking for trouble.

    Invalid order for directive xxx

    The directives in the .top and .itp files have rules about the order in which they can appear, and this error is seen when the order is violated. Consider the examples and discussion in chapter 5 of the GROMACS manual, and/or from tutorial material. The include file mechanism cannot be used to #include a file in just any old location, because they contain directives and these have to be properly placed.

    In particular, " Invalid order for directive defaults " is a result of defaults being set in the topology or force field files in the inappropriate location the [defaults] section can only appear once and must be the first directive in the topology. The [defaults] directive is typically present in the force field file ( forcefield.itp ), and is added to the topology when you #include this file in the system topology.

    If the directive in question is atomtypes (which is the most common source of this error) or any other bonded or nonbonded [*types] directive, typically the user is adding some non-standard species (ligand, solvent, etc) that introduces new atom types or parameters into the system. As indicated above, these new types and parameters must appear before any [moleculetype] directive. The force field has to be fully constructed before any molecules can be defined.

    Atom index n in position_restraints out of bounds

    A common problem is placing position restraint files for multiple molecules out of order. Recall that a position restraint .itp file containing a [ position_restraints ] block can only belong to the [ moleculetype ] block that contains it. For example:

    Further, the atom index of each [position_restraint] must be relative to the [moleculetype] , not relative to the system (because the parsing has not reached [molecules] yet, there is no such concept as "system"). So you cannot use the output of a tool like genrestr blindly (as genrestr -h warns).

    System has non-zero total charge

    Notifies you that counter-ions may be required for the system to neutralize the charge or there may be problems with the topology.

    If the charge is a non-integer, then this indicates that there is a problem with the topology. If pdb2gmx has been used, then look at the right hand comment column of the atom listing, which lists the cumulative charge. This should be an integer after every residue (and/or charge group where applicable). This will assist in finding the residue where things start departing from integer values. Also check the capping groups that have been used.

    If the charge is already close to an integer, then the difference is caused by rounding errors and not a major problem.

    Note for PME users: It is possible to use a uniform neutralizing background charge in PME to compensate for a system with a net background charge. There is probably nothing wrong with this in principle, because the uniform charge will not perturb the dynamics. Nevertheless, it is standard practice to actually add counter-ions to make the system net neutral.

    Incorrect number of parameters

    Look at the topology file for the system. You've not given enough parameters for one of the bonded definitions. Sometimes this also occurs if you've mangled the Include File Mechanism or the topology file format (see: GROMACS Manual Chapter 5) when you edited the file.

    Number of coordinates in coordinate file does not match topology

    This is pointing out that, based on the information provided in the topology file, .top, the total number of atoms or particles within the system does not match exactly with what is provided within the coordinate file, often a .gro or a .pdb.

    The most common reason for this is simply that the user has failed to update the topology file after solvating or adding additional molecules to the system, or made a typographical error in the number of one of the molecules within the system. Ensure that the end of the topology file being used contains something like the following, that matches exactly with what is within the coordinate file being used, in terms of both numbers and order of the molecules:

    In a case when grompp can't find any any atoms in the topology file at all ( number of coordinates in coordinate file (conf.gro, 648) does not match topology (topol.top, 0) ) and that error is preceded by warnings like:

    then your system's C preprocessor, cpp, is not being found or run correctly. One reason might also be that the cpp variable is not properly set in the .mdp file. As of GROMACS version 4.0, grompp contains its own preprocessor, so this error should not occur.

    This error can also occur when the .mdp file has been edited under Windows, and your cpp is intolerant of the mismatch between Windows and Unix end-of-line characters. If it is possible that you have done this, try running your .mdp file through the standard Linux dos2unix utility.

    Fatal error: No such moleculetype XXX

    Each type of molecule in your [ molecules ] section of your .top file must have a corresponding [ moleculetype ] section defined previously, either in the .top file or an included.itp file. See GROMACS Manual section 5.6.1 for the syntax description. Your .top file doesn't have such a definition for the indicated molecule. Check the contents of the relevant files, how you have named your molecules, and how you have tried to refer to them later. Pay attention to the status of #ifdef and / or #include statements.

    T-Coupling group XXX has fewer than 10% of the atoms

    It is possible to specify separate thermostats (temperature coupling groups) for every molecule type within a simulation. This is a particularly bad practice employed by many new users to Molecular Dynamics Simulations. Doing so is a bad idea, as you can introduce errors and artifacts that are hard to predict. In some cases it is best to have all molecules within a single group, using system . If separate coupling groups are required to avoid the "hot solvent cold solute" problem, then ensure that they are of "sufficient size" and combine molecule types that appear together within the simulation. For example, for a protein in water with counter-ions, one would likely want to use Protein and Non-Protein .

    The cut-off length is longer than half the shortest box vector or longer than the smallest box diagonal element. Increase the box size or decrease rlist

    This error is generated in the cases as noted within the message. The dimensions of the box are such that an atom will interact with itself (when using periodic boundary conditions), thus violating the minimum image convention. Such an event is totally unrealistic and will introduce some serious artefacts. The solution is again what is noted within the message, either increase the size of the simulation box so that it is at an absolute minimum twice the cut-off length in all three dimensions (take care here if are using pressure coupling, as the box dimensions will change over time and if they decrease even slightly, you will still be violating the minimum image convention) or decrease the cut-off length (depending on the force field utilised, this may not be an option).

    Unknown left-hand XXXX in parameter file

    grompp has found an unknown term in the .mdp file fed to it. You should check the spelling of XXXX and look for typographical errors. Be aware that quite a few run parameters changed between GROMACS 3.x and GROMACS 4.x and the output from grompp will sometimes offer helpful commentary about these situations.

    Atom index (1) in bonds out of bounds

    This kind of error looks like

    This error is fairly self-explanatory. You should look at your .top file and check that all of the [molecules] sections contain all of the data pertaining to that molecule, and no other data. That is, you cannot #include another molecule type (.itp file) before the previous [moleculetype] has ended. Consult the examples in chapter 5 of the manual for information on the required ordering of the different [sections] . Pay attention to the contents of any files you have included with #include directives.

    This error can also arise if you are using a water model that is not enabled for use with your chosen force field by default. For example, if you are attempting to use the SPC water model with an AMBER force field, you will see this error. The reason is that, in spc.itp , there is no #ifdef statement defining atom types for any of the AMBER force fields. You can either add this section yourself, or use a different water model.

    XXX non-matching atom names

    This error usually indicates that the order of the topology file does not match that of the coordinate file. When running grompp, the program reads through the topology, mapping the supplied parameters to the atoms in the coordinate file. If there is a mismatch, this error is generated. To remedy the problem, make sure that the contents of your [ molecules ] directive matches the exact order of the atoms in the coordinate file.

    In some cases, the error is harmless. For example, when running simulations with the MARTINI force field, the workflow relies on grompp to apply the correct names, which are not previously assigned. Also, perhaps you are using a coordinate file that has the old (pre-4.5) ion nomenclature. In this case, allowing grompp to re-assign names is harmless. For just about any other situation, when this error comes up, it should not be ignored. Just because the -maxwarn option is available does not mean you should use it in the blind hope of your simulation working. It will undoubtedly blow up.

    The sum of the two largest charge group radii (X) is larger than rlist - rvdw/rcoulomb

    This error warns that some combination of settings will result in poor energy conservation at the longest cutoff, which occurs when charge groups move in or out of neighborlist range. The error can have two sources:

    1. Your charge groups encompass too many atoms. Most charge groups should be less than 4 atoms or less.
    2. Your .mdp settings are incompatible with the chosen algorithms. For switch or shift functions, rlist must be larger than the longest cutoff (rvdw or rcoulomb) to provide buffer space for charge groups that move beyond the neighbor searching radius. If set incorrectly, you may miss interactions, contributing to poor energy conservation.

    A similar error ("The sum of the two largest charge group radii (X) is larger than rlist") can arise under two circumstances:

    1. The charge groups are inappropriately large or rlist is set too low.
    2. Molecules are broken across periodic boundaries, which is not a problem in a periodic system. In this case, the sum of the two largest charge groups will correspond to a value of twice the box vector along which the molecule is broken.

    Invalid line in coordinate file for atom X

    This error arises if the format of the .gro file is broken in some way. The most common explanation is that the second line in the .gro file specifies an incorrect number of atoms, causing grompp to continue searching for atoms but finding box vectors.


    Most of us have heard this question from the software developers who are familiar with SQL Server:

    “How can we pass a list of parameters to a stored procedure or a function?”

    Basically, in this article, we will try to find the answer to this question. However, the short answer to this question can be like this:

    “When a data-driven application needs a list of parameters to any routines, we can overcome this issue by using the TVPs”. In the next sections of this article, we will learn using table-valued parameters with straightforward examples. This way, we will build a better understanding to answer this question too.


    Although John Sansom's solution works, there's another way to do this, without having to use a potentially inefficient scalar valued UDF. In the SSRS report, on the parameters tab of the query definition, set the parameter value to

    In your query, you can then reference the value like so:

    This is what I use when passing a multi-select param to another multi-select param.

    This is one of the poor supported features in SQL Reporting Services.

    What you need to do is pass all of your selected items as a single string to your stored procedure. Each element within the string will be separated by a comma.

    What I then do is split the string using a function that returns the provided string as a table. See below.

    You can then reference the results in the where clause of your main query like so:

    I hope this you find this solution to be of use. Please feel free to pose any questions you may have.

    John Sansom and Ed Harper have great solutions. However, I was unable to get them to work when dealing with ID fields (i.e. Integers). I modified the split function below to CAST the values as integers so the table will join with primary key columns. I also commented the code and added a column for order, in case the delimited list order was significant.

    Use this function as previously noted with:

    The "IN" phrase (Ed's Solution) won't work against an Oracle connection (at least version 10). However, found this simple work-around which does. Using the dataset's parameter's tab turn the multi-value parameter into a CSV:

    Then in your SQL statement's WHERE clause use the instring function to check for a match.

    I ran into a problem with the otherwise wonderful fn_MVParam. SSRS 2005 sent data with an apostrophe as 2 quotes.

    I added one line to fix this.

    My version of the fn also uses varchar instead of nvarchar.

    Modification of great John solution, solve:

    space after one of piece in parameter

    Just a comment - I ran into a world of hurt trying to get an IN clause to work in a connection to Oracle 10g. I don't think the rewritten query can be correctly passed to a 10g db. I had to drop the multi-value completely. The query would return data only when a single value (from the multi-value parameter selector) was chosen. I tried the MS and Oracle drivers with the same results. I'd love to hear if anyone has had success with this.

    1. Create the dataset for the list in the report
    2. Right click the parameter and select available values
    3. Select newly created dataset as dataset
    4. Add the value passing to the stored procedure as value field
    5. Add the description of the parameter to label field (If the parameter is customerID then label could be CustomerName ex.)
    6. Finally, add following code to your stored procedure

    declare @paramName AS NVARCHAR(500),

    IF RIGHT(@paramName, 1) = ',' BEGIN SET @paramName = LEFT((@paramName, LEN((@paramName)-1) END

    It would probably be easier to add the multi values to a table first and then you can join or whatever you'd like (even with wildcards) or save the data to another table for later use (or even add the values to another table).

    Set the Parameter value via expression in the dataset:

    The query itself:

    Wildcard example:

    I'd love to figure out a way to do it without dynamic SQL but I don't think it'll work due to the way SSRS passes the parameters to the actual query. If someone knows better, please let me know.

    this worked for a distinct set of strings ( e.g. "START", "END", "ERROR", "SUCCESS" )

    1)define a Report-Parameter ( e.g. @log_status ) and check "Allow multiple values"

    2) define a dataset
    3) open the dataset-properties window
    3a) in the Query-Tab enter your query: e.g.

    3b) in the Parameters-Tab enter your Parameter, e.g.
    Parametername: @log_status Parametervalue: <<Expr>>
    3c) for the Expr click on the "fx"-Button and enter:

    finished! ( it's similar to Ed Harper's solution, but sorry to say this didn't work for me )

    As of MSSQL 2016 - with compatibility level 130, you can utilize String_Split() to parse your joined parameter from SSRS. Say you wanted to populate a parameter from a query in SSRS and then pass that param to a stored proc or SSRS Shared Dataset:

    1. Add two datasets to your SSRS report, one that returns a list of values and labels to display in your parameter and one that has the actual data you're looking to filter. Each of these datasets can be a stored proc or shared dataset or embedded query.
    2. Create a parameter in SSRS that is NOT on the dataset you want to filter. Let's call it Customer
    3. Set Customer param to allow multiple values and set up Available Values tab with the dataset, labels, and values you want to display from the query.
    4. Right click the dataset you're looking to filter and add a parameter that IS defined in the stored procedure. Let's call it CustomerList .
    5. Click the expression button next to the value field for this parameter and do Join(Parameters!Customer.Value, ",")
    6. In your stored proc or shared dataset, utilize string_split to break the comma-delimited @CustomerList param into an array: Customer.CustID in (select value from string_split(@CustomerList, ',') where value = Customer.CustID)

    If you want to pass multiple values to RS via a query string all you need to do is repeat the report parameter for each value.

    For example I have a RS column called COLS and this column expects one or more values.

    What you also can do is add this code in your stored procedure:

    (Assuming @s is a multi-valued string (like "A,B,C"))

    I'm new to the site, and couldn't figure how to comment on a previous answer, which is what I feel this should be. I also couldn't up vote Jeff's post, which I believe gave me my answer. Anyways.

    While I can see how some of the great posts, and subsequent tweaks, work, I only have read access to the database, so no UDF, SP or view-based solutions work for me. So Ed Harper's solution looked good, except for VenkateswarluAvula's comment that you can not pass a comma-separated string as a parameter into an WHERE IN clause and expect it to work as you need. But Jeff's solution to the ORACLE 10g fills that gap. I put those together with Russell Christopher's blog post at http://blogs.msdn.com/b/bimusings/archive/2007/05/07/how-do-you-set-select-all-as-the-default-for-multi-value-parameters-in-reporting-services.aspx and I have my solution:

    Create your multi-select parameter MYPARAMETER using whatever source of available values (probably a dataset). In my case, the multi-select was from a bunch of TEXT entries, but I'm sure with some tweaking it would work with other types. If you want Select All to be the default position, set the same source as the default. This gives you your user interface, but the parameter created is not the parameter passed to my SQL.

    Skipping ahead to the SQL, and Jeff's solution to the WHERE IN (@MYPARAMETER) problem, I have a problem all my own, in that 1 of the values ('Charge') appears in one of the other values ('Non Charge'), meaning the CHARINDEX might find a false-positive. I needed to search the parameter for the delimited value both before and after. This means I need to make sure the comma-separated list has a leading and trailling comma as well. And this is my SQL snippet:

    The bit in the middle is to create another parameter (hidden in production, but not while developing) with:

    • A name of MYPARAMETER_LIST
    • A type of Text
    • A single available value of ="," + join(Parameters!MYPARAMETER.Value,",") + "," and a label that
      doesn't really matter (since it will not be displayed).
    • A default value exactly the same
    • Just to be sure, I set Always Refresh in both parameters' Advanced properties

    It is this parameter which gets passed to SQL, which just happens to be a searchable string but which SQL handles like any piece of text.

    I hope putting these fragments of answers together helps somebody find what they're looking for.