> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/fr/config/persistence.md).

# Persistance

PowerShell Universal stocke la sortie et les entrées des tâches, les identités et les jetons d'application dans la base de données.

## SQLite

{% hint style="warning" %}
SQLite ne passe pas à l'échelle et n'est recommandé que pour les petites instances ou les environnements de test. Nous recommandons de sélectionner MS SQL ou PostgreSQL pour les environnements de production.
{% endhint %}

Lors de l'utilisation de SQLite, PowerShell Universal stocke toutes les données dans un fichier de base de données unique local à l'application PowerShell Universal. Nous recommandons SQLite plutôt que LiteDB pour les nouvelles installations, car il est plus largement utilisé et pris en charge.

Vous pouvez configurer SQLite en mettant à jour le fichier `appsettings.json`.

```json
 "Plugins": [
    "SQLite"
  ],
  "Data": {
    "ConnectionString": "Data Source=%ProgramData%\\UniversalAutomation\\psu.db",
  },
```

### Résolution des problèmes de taille de base de données importante

Les bases de données SQLite volumineuses peuvent résulter d'un long historique de tâches, de tâches qui écrivent de manière excessive dans la sortie du pipeline ou dans les flux de sortie PowerShell, d'informations obsolètes sur les ordinateurs, les processus ou les espaces d'exécution, ou de tables de journaux volumineuses.

À mesure que la base de données croît, les performances de PowerShell Universal seront affectées. Afin de déterminer ce qui cause cette croissance, utilisez l'outil SQLite\_Analyzer. Vous pouvez télécharger SQLite\_Analyzer dans le fichier ZIP des outils sur la [page de téléchargement de SQLite](https://www.sqlite.org/download.html).

Une fois téléchargé, exécutez l'analyseur sur votre fichier de base de données PowerShell Universal pour obtenir une liste détaillée d'informations sur l'état de votre base de données. Nous recommandons d'arrêter PowerShell Universal avant d'exécuter la commande suivante.

```
.\sqlite_analyzer.exe C:\ProgramData\UniversalAutomation\database.db
```

La commande inclura des informations sur la taille des tables et des index dans la base de données. Cela permettra d'identifier précisément l'emplacement où la grande quantité de données est stockée.

### Réduction de la taille de la base de données

SQLite conserve l'espace inutilisé dans la liste libre (freelist) de la base de données après la mise à jour ou la suppression d'enregistrements. Les bases de données qui exécutent de nombreuses tâches ou qui fonctionnent depuis plus longtemps peuvent avoir un fichier de base de données volumineux avec une liste libre importante. Vous pouvez exécuter l'outil `sqlite_analyzer` pour déterminer l'espace utilisé par la liste libre.

L'exemple de base de données ci-dessous occupe 23 Go, mais 99,946 % de cet espace est inutilisé.

```
/** Disk-Space Utilization Report For ./psu.db

Page size in bytes................................ 4096      
Pages in the whole file (measured)................ 5953770   
Pages in the whole file (calculated).............. 5953770   
Pages that store data............................. 3230         0.054% 
Pages on the freelist (per header)................ 5950539     99.946% 
Pages on the freelist (calculated)................ 5950539     99.946% 
Pages of auto-vacuum overhead..................... 0            0.0% 
Number of tables in the database.................. 66        
Number of indices................................. 48        
Number of defined indices......................... 47        
Number of implied indices......................... 1         
Size of the file in bytes......................... 24386641920
Bytes of user payload stored...................... 6611527      0.027% 
```

Pour récupérer cet espace, SQLite peut utiliser la fonctionnalité vacuum pour reconstruire la base de données et réduire la taille de la liste libre. La fonctionnalité `auto-vacuum` n'est pas activée dans les bases de données PowerShell Universal. Si vous rencontrez des problèmes de taille de base de données, vous pouvez exécuter la commande `VACUUM;` dans l'outil Base de données de l'outil de support.

{% hint style="warning" %}
Nous recommandons de sauvegarder votre fichier de base de données avant d'effectuer un VACUUM. Cette commande reconstruit la base de données, la défragmente et supprime la liste libre du fichier.
{% endhint %}

Cliquez sur Help \ Support Tools \ Tools \ Database \ Execute. Entrez la commande suivante et exécutez-la.

```
VACUUM;
```

## SQL

{% hint style="info" %}
La prise en charge de SQL nécessite une [licence](https://ironmansoftware.com/pricing/powershell-universal).
{% endhint %}

Vous pouvez configurer PowerShell Universal pour stocker les données dans une base de données Microsoft SQL. Cela vous permet de faire évoluer votre base de données et vos instances PowerShell Universal. PowerShell Universal exécutera automatiquement les tâches sur le pool d'agents. Vous pouvez mettre à jour le fichier `appsettings.json` de PowerShell Universal comme suit pour vous connecter à un serveur SQL central.

```json
  "Plugins": [
    "SQL"
  ],
  "Data": {
    "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=PSUv3;Integrated Security=true;",
  },
```

Les instances PowerShell Universal partageront une seule file d'attente de tâches et une seule instance exécutera une tâche, que ce soit selon la planification, en tant que déclencheur ou manuellement. Toutes les données relatives aux tâches seront stockées dans la base de données centralisée.

### Azure SQL

Nous recommandons d'utiliser les identités gérées Azure lors de l'utilisation d'Azure SQL. Un exemple de chaîne de connexion est présenté ci-dessous.

```
Server=tcp:psudb.database.windows.net,1433;Initial Catalog=psu;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication=Active Directory Managed Identity;
```

Un guide sur l'utilisation de [l'identité gérée pour Azure SQL est disponible ici](https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-sql).

### Installation et mise à jour manuelles du schéma

Dans certains environnements, le service PSU peut ne pas avoir accès pour créer le schéma dans la base de données. Dans ce cas, vous pouvez installer et mettre à jour manuellement le schéma en exécutant les fichiers SQL inclus avec PowerShell Universal. Dans le dossier d'installation de PowerShell Universal, vous trouverez un répertoire `SQL` contenant deux fichiers SQL.

Exécutez ces fichiers sur votre base de données avant de mettre à niveau PowerShell Universal. Vous devrez arrêter PowerShell Universal pendant cette opération. Vous pouvez les exécuter dans n'importe quel ordre. Les deux scripts sont idempotents.

Par défaut, PowerShell Universal tentera de mettre à jour le schéma de la base de données. Pour désactiver complètement cette fonctionnalité, vous pouvez définir le paramètre `RunMigrations` à false dans appsettings.json.

```json
"Data": {
   "RunMigrations": false
}
```

### Questions fréquemment posées

#### Privilèges du compte de base de données

*Quel est le niveau de permission maximal requis pour un compte utilisateur de base de données lors des installations ou des mises à niveau ?*

Lors du démarrage du serveur PowerShell Universal, la base de données sera installée et mise à niveau, si nécessaire. Si la base de données existe déjà, vous aurez besoin de `db_owner` pour créer et modifier des tables. Si la base de données n'existe pas encore, vous aurez besoin de `dbcreator`.

*Quel est le niveau de permission maximal requis une fois la ou les bases de données créées pour les activités quotidiennes ?*

PowerShell Universal effectue des opérations de base de données limitées lors des activités quotidiennes. Celles-ci consistent à insérer, mettre à jour, supprimer et consulter des données dans les tables créées. Vous n'aurez besoin que des rôles suivants : `db_datawriter`, `db_datareader`

#### Installation et prise en charge de la base de données et du système d'exploitation

*Quelles versions de SQL Server sont prises en charge ? Y a-t-il une version minimale requise ?*

PowerShell Universal prend en charge Microsoft SQL Server 2016 et versions ultérieures.

*Quelles versions de compatibilité de base de données prenez-vous en charge ?*

PowerShell Universal nécessite la [version de compatibilité de base de données 130](https://learn.microsoft.com/en-us/sql/relational-databases/databases/view-or-change-the-compatibility-level-of-a-database?view=sql-server-ver16) ou une version ultérieure.

*D'autres composants SQL Server doivent-ils être installés en plus du moteur de base de données ?*

Aucun

*Quelles versions de Windows Server sont prises en charge ?*

Les versions actuellement prises en charge par Microsoft — Windows Server 2016 et versions ultérieures. Actuellement, la date de fin de support étendu pour 2012 R2 par Microsoft est le 10 octobre 2023, date à laquelle nous cesserons de prendre en charge ce système d'exploitation.

#### Maintenance et sauvegarde de la base de données

*Dans quel délai les données doivent-elles être récupérées ?*

Les données sont principalement destinées aux rapports, à l'exception des jetons d'application, de sorte qu'elles n'ont pas besoin d'être récupérées immédiatement. Selon l'utilisation des jetons d'application, certains systèmes peuvent perdre l'accès au serveur lors de la récupération de la base de données.

#### Conception de la base de données

*Quelle sera la taille de la ou des bases de données lors du chargement initial ?*

La base de données initiale ne contient pas un grand ensemble de données initiales et n'occupera principalement que l'espace du schéma.

*Quelle est la croissance estimée par mois/année de chaque base de données ?*

La croissance estimée dépend de nombreux facteurs, notamment le nombre de tâches exécutées par mois, la quantité de journaux de tâches et de sorties de pipeline stockées, et l'agressivité du nettoyage des données.

La taille de la base de données dépasse rarement 2 Go avec les paramètres par défaut. L'extension des paramètres de nettoyage pour conserver un historique plus long des tâches, l'exécution plus fréquente des tâches et le stockage de données telles que l'historique du terminal peuvent augmenter la taille de la base de données.

*Votre application prend-elle en charge l'utilisation de la compression SQL Server (au niveau des lignes ou des pages) ?*

Oui. Nous utilisons un client de base de données standard et il n'y a aucune limitation sur la compression au niveau des lignes et des pages.

#### Utilisation de la base de données

*S'agit-il d'une base de données transactionnelle (OLTP) ou de rapports (OLAP) ?*

Il s'agit principalement d'une base de données de rapports qui contient des informations telles que l'historique des tâches, la sortie des tâches et les jetons d'application.

*Quel est le nombre total de connexions utilisateur/appareil ?*

Un pool de connexions par serveur PSU. 1024 connexions maximum par serveur.

*Quel est le nombre maximum de connexions utilisateur/appareil simultanées ?*

Un pool de connexions par serveur PSU. 1024 connexions maximum par serveur.

## PostgreSQL

Vous pouvez activer PostgreSQL avec l'extension `PostgreSQL`.

```json
 "Plugins": [
    "PostgreSQL"
  ],
  "Data": {
    "ConnectionString": "Host=PGhostname; Database=PGdatabase; User Id=PGusername; Password=PGpassword!;Port=5432",
  },
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/fr/config/persistence.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
