Configuration d'une base de données SQL Server

Configurez une base de données SQL Server pour qu'elle fonctionne avec Jazz ® Team Server, IBM® Engineering Lifecycle Management et Data Warehouse.

Important: Dans la version 6.0.6.1 et les versions ultérieures, vous pouvez partitionner une table REPOSITORY.VERSION non partitionnée dans un système activé pour la configuration. Le partitionnement des tables de base de données permet de gérer les performances, la disponibilité et l'évolutivité de données volumineuses (millions d'artefacts) dans un référentiel. Pour utiliser les fonctions de partitionnement, vous devez installer une édition Enterprise d'une base de données SQL Server. Les éditions Standard, Workgroup ou Express de la base de données ne prennent pas en charge le partitionnement.

Cette procédure requiert de respecter les conditions préalables ci-dessous pour SQL Server :

  • Le service est démarré.
  • Le pilote Java Database Connectivity (JDBC) est installé sur le serveur ELM . Pour connaître les versions prises en charge de pilote, voir Hardware and software requirements.
  • Le protocole TCP est activé pour SQL Server.
  • L'utilisateur qui crée la table de base de données doit être membre du rôle serveur fixe sysadmin ou propriétaire de la base de données (dbo).
  • Le mot de passe que vous utilisez pour la connexion JDBC ne peut pas contenir les caractères accolade gauche ({) et point-virgule (;).
  • Pour le système d'exploitation WindowsVérifiez que la sécurité du serveur fonctionne en mode mixte. Vous pouvez déterminer le mode en vérifiant la sécurité du serveur. La valeur Mode d'authentification SQL Server et Windows doit lui être attribuée.
  • La base de données de l'entrepôt de données doit être créée avec le classement sensible à la casse.
Remarque: si vous utilisez SQL Server dans une langue autre que l'anglais, vous devez changer la langue en anglais avant de créer l'entrepôt de données:
  1. Dans SQL Server Management Studio, cliquez avec le bouton droit de la souris sur la connexion au serveur de base de données.
  2. Dans la fenêtre en incrustation, sélectionnez Propriétés.
  3. Dans la fenêtre Propriétés du serveur, sélectionnez Avancé et définissez l'entrée Langue par défaut sur Anglais.
  4. Sauvegardez vos modifications.

Configuration d'une base de données

Configurez la base de données SQL Server en utilisant l'outil de ligne de commande sqlcmd, qui est fourni avec l'installation de SQL Server.
Pour activer l'outil sqlcmd pour Microsoft SQL Server Express Edition:
  1. Dans le menu Démarrer, recherchez Microsoft SQL Serveret cliquez sur Outils de configuration > SQL Server Configuration Manager.
  2. Dans la fenêtre SQL Server Configuration Manager, dans la sous-fenêtre de gauche, cliquez sur SQL Server Network Configuration > Protocols for SQLEXPRESS.
  3. Cliquez deux fois sur le protocole Canaux nommés.
  4. Dans la boîte de dialogue Propriétés de canaux nommés, sélectionnez Oui pour la zone Activé.
  5. Changez la valeur de la zone Nom du canal comme suit : \\.\pipe\sql\query.
  6. Cliquez sur Appliquer puis redémarrez les services SQL Server.
Vous pouvez également utiliser un outil visuel, tel que SQL Server Studio Management, qui est également disponible pour la version Express sous le nom de SQL Server Studio Management Express. Pour plus d'informations, reportez-vous à la documentation de SQL Server ou adressez-vous à un administrateur de base de données SQL Server.
Important: Si vous installez Jazz Team Server avec les applications ELM sur le même ordinateur ou sur des plateformes réparties, vous devez créer une base de données distincte et un utilisateur de base de données associé à cette base de données.
  1. Créez une base de données pour chaque instance de Jazz Team Server, Change and Configuration Management, Quality Management, Requirements Management, Data Collection Component, Lifecycle Query Engine, Link Index Provider, IBM Engineering Lifecycle Optimization - Engineering Insights, applications Global Configuration Management . Créez également une base de données pour chaque entrepôt de données associé à un serveur Jazz Team Server. Par exemple, si vous disposez d'une application CCM, d'une application QM, d'une application RM, d'un serveur Jazz Team Server, d'une application DCC, d'une application LQE, d'une application LDX, d'une application ENI , d'une application GC et d'un entrepôt de données, vous devrez créer 12 bases de données.
    CREATE DATABASE jts 
    GO 
    
    CREATE DATABASE ccm 
    GO 
    
    CREATE DATABASE qm 
    GO 
    
    CREATE DATABASE rm 
    GO 
    
    CREATE DATABASE dcc 
    GO 
    
    CREATE DATABASE lqe 
    GO 
    
    CREATE DATABASE ldx 
    GO 
    
    CREATE DATABASE eni 
    GO 
    
    CREATE DATABASE gc 
    GO 
    
    CREATE DATABASE dw 
    GO 
    
  2. Créez un utilisateur et un mot de passe et changez le propriétaire de la base de données en entrant ces commandes :
    CREATE LOGIN jtsDBuser
    WITH PASSWORD = 'jtsDBpswd';
    USE jts;
    exec sp_changedbowner 'jtsDBuser'
    GO 
    
    CREATE LOGIN ccmDBuser
    WITH PASSWORD = 'ccmDBpswd';
    USE ccm;
    exec sp_changedbowner 'ccmDBuser'
    GO 
    
    CREATE LOGIN qmDBuser
    WITH PASSWORD = 'qmDBpswd';
    USE qm;
    exec sp_changedbowner 'qmDBuser'
    GO 
    
    CREATE LOGIN rmDBuser
    WITH PASSWORD = 'rmDBpswd';
    USE rm;
    exec sp_changedbowner 'rmDBuser'
    GO 
    
    CREATE LOGIN dccDBuser
    WITH PASSWORD = 'dccDBpswd';
    USE dcc;
    exec sp_changedbowner 'dccDBuser'
    GO 
    
    CREATE LOGIN lqeDBuser
    WITH PASSWORD = 'lqeDBpswd';
    USE lqe;
    exec sp_changedbowner 'lqeDBuser'
    GO 
    
    CREATE LOGIN ldxDBuser
    WITH PASSWORD = 'ldxDBpswd';
    USE ldx;
    exec sp_changedbowner 'ldxDBuser'
    GO 
    
    CREATE LOGIN eniDBuser
    WITH PASSWORD = 'eniDBpswd';
    USE eni;
    exec sp_changedbowner 'eniDBuser'
    GO 
    
    CREATE LOGIN gcDBuser
    WITH PASSWORD = 'gcDBpswd';
    USE gc;
    exec sp_changedbowner 'gcDBuser'
    GO 
    
    CREATE LOGIN dwDBuser
    WITH PASSWORD = 'dwDBpswd';
    USE dw;
    exec sp_changedbowner 'dwDBuser'
    GO 
    
  3. Changez le classement des bases de données. Les bases de données ELM requièrent une sensibilité à la casse et la valeur par défaut pour SQL Server est un classement insensible à la casse. A partir de l'outil de ligne de commande, entrez les commandes ci-après. Notez que SQL_Latin1_General_CP437_CS_AS est un exemple et n'importe quel classement CS_AS peut être utilisé :
    ALTER DATABASE jts COLLATE SQL_Latin1_General_CP437_CS_AS 
    GO
    
    ALTER DATABASE ccm COLLATE SQL_Latin1_General_CP437_CS_AS 
    GO
    
    ALTER DATABASE qm COLLATE SQL_Latin1_General_CP437_CS_AS 
    GO
    
    ALTER DATABASE rm COLLATE SQL_Latin1_General_CP437_CS_AS 
    GO
    
    ALTER DATABASE dcc COLLATE SQL_Latin1_General_CP437_CS_AS 
    GO
    
    ALTER DATABASE lqe COLLATE SQL_Latin1_General_CP437_CS_AS 
    GO
    
    ALTER DATABASE ldx COLLATE SQL_Latin1_General_CP437_CS_AS 
    GO
    
    ALTER DATABASE eni COLLATE SQL_Latin1_General_CP437_CS_AS 
    GO
    
    ALTER DATABASE gc COLLATE SQL_Latin1_General_CP437_CS_AS 
    GO
    
    ALTER DATABASE dw COLLATE SQL_Latin1_General_CP1_CS_AS
    GO
  4. Modifiez le système de version de ligne pour les bases de données JTS, CCM, QM, RM, DCC, LQE, LDX, ENI, GC et DW. Depuis l'outil de ligne de commande, exécutez les commandes suivantes :
    Remarque: Vérifiez que la connexion à la base de données est ouverte avant d'exécuter ces commandes.
    ALTER DATABASE jts SET READ_COMMITTED_SNAPSHOT ON
    GO
    ALTER DATABASE ccm SET READ_COMMITTED_SNAPSHOT ON
    GO
    ALTER DATABASE qm SET READ_COMMITTED_SNAPSHOT ON
    GO
    ALTER DATABASE rm SET READ_COMMITTED_SNAPSHOT ON
    GO
    ALTER DATABASE dcc SET READ_COMMITTED_SNAPSHOT ON
    GO
    ALTER DATABASE lqe SET READ_COMMITTED_SNAPSHOT ON
    GO
    ALTER DATABASE ldx SET READ_COMMITTED_SNAPSHOT ON
    GO
    ALTER DATABASE eni SET READ_COMMITTED_SNAPSHOT ON
    GO
    ALTER DATABASE gc SET READ_COMMITTED_SNAPSHOT ON
    GO
    ALTER DATABASE dw SET READ_COMMITTED_SNAPSHOT ON
    GO
  5. Créez une variable d'environnement nommée SQLSERVER_JDBC_DRIVER_FILE et faites-la pointer vers le pilote JDBC. L'emplacement du pilote varie en fonction de votre installation. Pour le système d'exploitation Windows
    1. Cliquez sur Démarrer > Panneau de configuration > Système.
    2. Cliquez sur l'onglet Avancé, puis sélectionnez Variables d'environnement.
    3. Dans la liste Variables système , cliquez sur Nouveau.
    4. Dans la zone Nom de la variable , entrez SQLSERVER_JDBC_DRIVER_FILEet dans la zone Valeur de la variable , entrez C:\<Path_to_JDBC_driver>\sqljdbc42.jar, où <Path_to_JDBC_driver> est le chemin d'accès au fichier de l'ordinateur qui héberge les applications et non la base de données.
    Pour les systèmes d'exploitation Unix
    1. Sur les systèmes Unix, ajoutez la déclaration de variable d'environnement suivante :
      SQLSERVER_JDBC_DRIVER_FILE =.:Path_to_JDBC_driver/sqljdbc42.jar
    Remarque: Si vous utilisez WebSphere® Application Server, vous devez également ajouter une propriété personnalisée qui pointe vers le pilote JDBC . Pour plus d'informations, voir Configuration de WebSphere Application Server.
  6. Pour configurer les connexions de bases de données et créer des tables de bases de données, procédez comme suit :
    1. Si vous utilisez WebSphere Liberty, démarrez le serveur et passez à l'étape Exécution de la configuration à l'aide de la configuration personnalisée dans l'assistant de configuration.
    2. Si vous déployez WebSphere Application Server, voir Déploiement et démarrage de WebSphere Application Server, puis passez à l'étape Exécution de la configuration à l'aide de la configuration personnalisée dans l'assistant de configuration.
    3. Si vous préférez modifier manuellement le fichier teamserver.properties pour la connexion à la base de données et exécuter les commandes repotools pour créer des tables de base de données, voir Configuration manuelle d'une base de données SQL Server.
    4. Si vous effectuez une mise à niveau depuis une version antérieure, continuez à exécuter les scripts de mise à niveau appropriés pour migrer vos connexions de base de données existantes.

Résolution des incidents

Si la commande repotools ne fonctionne pas, consultez les fichiers journaux appropriés, qui se trouvent dans le répertoire JazzInstallDir/server .

De même, vérifiez que les conditions suivantes sont correctes :

  • Le serveur SQL est configuré de manière à autoriser les connexions utilisant le protocole TCP/IP. Si nécessaire, redémarrez le service SQL.
  • Le nom d'hôte de l'ordinateur SQL Server et le port apparaissent correctement dans les fichiers teamserver.properties. Pour les applications LQE et LDX, le fichier de propriétés est dbconnection.properties.
  • Le nom de connexion, le mot de passe et le nom de la base de données apparaissent correctement dans les fichiers teamserver.properties.
  • Un pare-feu ne vous empêche pas d'accéder au serveur SQL. Utilisez une commande Telnet pour vous connecter au serveur en utilisant le nom d'hôte et le port figurant dans le fichier teamserver.properties.
  • L'utilisateur créé dispose des droits appropriés dans la base de données Jazz Team Server .
  • Les variables d'environnement du pilote JDBC sont configurées correctement pour votre environnement.
Remarque: Le code de base de données pour Jazz Team Server a été conçu pour être générique et standard afin de pouvoir être exécuté sur plusieurs plateformes de base de données ; toutefois, des différences existent entre les bases de données d'entreprise en termes de syntaxe, de stratégies d'optimisation et de sémantique de verrouillage. Le serveur a été testé sur le serveur SQL à l'aide d'une combinaison de tests et de simulations automatisés avec une charge de travail normale, et de tests de charge. La simulation avec une charge de travail normale a montré une performance acceptable. Dans certains cas, des blocages de bases de données ont été observés dans les tests simultanés automatisés ; cependant, ceux-ci ne se sont pas produits systématiquement sur différentes machines serveur.

Le serveur est conçu pour traiter un grand nombre de requêtes simultanées. Dans certains cas exceptionnels, des blocages peuvent se produire dans la base de données du répertoire, puisque des objets identiques ou similaires sont mis à niveau simultanément lors de transactions associées aux requêtes. Ceux-ci sont rares, mais normaux. Le système est conçu pour se protéger contre les interblocages, et l'intégrité des données est conservée ; il n'y a pas de perte de données. Occasionnellement, des blocages sont consignés par tâches, par exemple l'exécution du moteur de génération. En règle générale, la cause est détectée, et la tâche est réessayée. La génération ayant échoué peut être le résultat d'un blocage. Dans de très rares cas, une action d'utilisateur, par exemple le travail avec des éléments de travail ou avec un code source, est annulée pour résoudre un blocage. Dans ce cas, l'action de l'utilisateur échoue et un message d'erreur détaillé concernant le blocage est affiché à l'utilisateur. L'utilisateur peut ensuite réessayer l'action.

Tous les blocages sont consignés sur le serveur, fournissant des informations concernant la cause et les circonstances du blocage. L'entrée de journal comporte un texte similaire à l'entrée suivante:com.ibm.team.repository.common.RetryableDatabaseException: Serialization failure.

Si vous rencontrez des blocages fréquents, contactez le service de support du produit, ou consultez les dernières informations, mises à niveau ou techniques de contournement sur les forums sur jazz.net.

Configuration d'une base de données Jazz Authorization Server MS SQL Server

Jazz Authorization Server est configuré pour utiliser la base de données Apache Derby par défaut, mais vous pouvez utiliser une base de données d'entreprise telle que MS SQL Server dans votre environnement Jazz Authorization Server .

  1. Créez un fichier createOauthMSSQL.sql. Reportez-vous à l'exemple SQL suivant pour créer la base de données et les tables de Jazz Authorization Server. Vous pouvez utiliser un autre nom de base de données que oauth2db, mais vous devez utiliser le schéma OAuthDBSchema. Sachez également que ces valeurs sont des exemples qui doivent être modifiés en fonction de vos usages et de votre environnement.
    -- Manually create DATABASE using object explorer and provide name as OAUTH2DB2;
    
    USE OAUTH2DB2;
    GO
    
    CREATE SCHEMA OAUTHDBSCHEMA;
    GO
    
    ---- CREATE TABLES ----
    CREATE TABLE OAUTHDBSCHEMA.OAUTH20CACHE
    (
    LOOKUPKEY VARCHAR(256) NOT NULL, 
    UNIQUEID VARCHAR(128) NOT NULL,
    COMPONENTID VARCHAR(256) NOT NULL,
    TYPE VARCHAR(64) NOT NULL, 
    SUBTYPE VARCHAR(64), 
    CREATEDAT BIGINT,
    LIFETIME INT, 
    EXPIRES BIGINT, 
    TOKENSTRING NVARCHAR(MAX) NOT NULL,
    CLIENTID VARCHAR(64) NOT NULL,
    USERNAME VARCHAR(64) NOT NULL, 
    SCOPE VARCHAR(512) NOT NULL, 
    REDIRECTURI VARCHAR(2048), 
    STATEID VARCHAR(64) NOT NULL,
    EXTENDEDFIELDS NVARCHAR(2048) NOT NULL DEFAULT '{}'
    );
    GO
    
    CREATE TABLE OAUTHDBSCHEMA.OAUTH20CLIENTCONFIG 
    (
    COMPONENTID VARCHAR(256) NOT NULL, 
    CLIENTID VARCHAR(256) NOT NULL, 
    CLIENTSECRET VARCHAR(256), 
    DISPLAYNAME VARCHAR(256) NOT NULL,
    REDIRECTURI VARCHAR(2048), 
    ENABLED INT,
    CLIENTMETADATA NVARCHAR(2048) NOT NULL DEFAULT '{}'
    );
    GO
    
    CREATE TABLE OAUTHDBSCHEMA.OAUTH20CONSENTCACHE (
    CLIENTID VARCHAR(256) NOT NULL,
    USERID VARCHAR(256),
    PROVIDERID VARCHAR(256) NOT NULL,
    SCOPE VARCHAR(1024) NOT NULL,
    EXPIRES BIGINT,
    EXTENDEDFIELDS NVARCHAR(2048) NOT NULL DEFAULT '{}'
    );
    GO
    
    ---- ADD CONSTRAINTS ----
    ALTER TABLE OAUTHDBSCHEMA.OAUTH20CACHE
    ADD CONSTRAINT PK_LOOKUPKEY PRIMARY KEY (LOOKUPKEY);
    GO
    
    ALTER TABLE OAUTHDBSCHEMA.OAUTH20CLIENTCONFIG 
    ADD CONSTRAINT PK_COMPIDCLIENTID PRIMARY KEY (COMPONENTID,CLIENTID);
    GO
    
    ---- CREATE INDEXES ----
    CREATE INDEX OAUTH20CACHE_EXPIRES ON OAUTHDBSCHEMA.OAUTH20CACHE (EXPIRES ASC);
    GO
    
    ---- GRANT PRIVILEGES ----
    ---- UNCOMMENT THE FOLLOWING IF YOU USE AN ACCOUNT 
    OTHER THAN ADMINISTRATOR FOR DB ACCESS ----
    
    -- Change dbuser to the account you want to use to access your database
    --GRANT ALL ON OAUTHDBSCHEMA.OAUTH20CACHE TO dbuser;
    --GRANT ALL ON OAUTHDBSCHEMA.OAUTH20CLIENTCONFIG TO dbuser;
    --GRANT ALL ON OAUTHDBSCHEMA.OAUTH20CONSENTCACHE TO dbuser;
    
    ---- END OF GRANT PRIVILIGES ----
  2. Ouvrez un outil de ligne de commande sqlcmd et exécutez le script suivant pour créer la base de données, les tables et les index, et pour affecter des privilèges :
    createOauthMSSQL.sql
    GO

    Le script crée la base de données oauth2db, puis les tables dans le schéma OAuthDBSchema. Un pool de mémoire tampon d'une taille de page minimale de 8K est requis pour les tables. Le script SQL crée ce pool et les espaces table requis, mais cela n'est pas nécessaire si les pools de mémoire tampon utilisent déjà une taille de page de 8K ou supérieure.

  3. Après avoir créé les tables de base de données, vous devez configurer Jazz Authorization Server pour utiliser les tables. Accédez au répertoire d'installation de Jazz Authorization Server et ouvrez le fichier appConfig.xml pour l'éditer. Le chemin d'accès par défaut au fichier appConfig.xml sous Windows est C:\IBM\JazzAuthServer\wlp\usr\servers\jazzop, et /opt/IBM/JazzAuthServer/wlp/usr/servers/jazzop sous Linux.
  4. Mettez en commentaire la section suivante relative à la base de données Apache Derby :
    <dataSource id="OAuthFvtDataSource" jndiName="jdbc/OAuth2DB">
            <jdbcDriver libraryRef="DerbyLib" />
            <properties.derby.embedded
                databaseName="asDB"
                createDatabase="create" />
        </dataSource>
    
        <library id="DerbyLib">
            <fileset dir="${shared.config.dir}/lib/global" includes="derby.jar" />
        </library>
  5. Ajoutez la section suivante pour configurer une base de données SQL. Personnalisez-la en fonction de votre serveur SQL spécifique :
    <dataSource id="OAUTH2DBDS" jndiName="jdbc/OAUTH2DB">
    <jdbcDriver libraryRef="MSJDBCLib"/>
    <properties.microsoft.sqlserver user="username" password="Password" databaseName="OAUTH2DB" serverName="SQLDBServer" portNumber="1433"/>
    </dataSource>
    <library id="MSJDBCLib">
    <fileset dir="${shared.config.dir}/lib/global" id="sqljdbc42" includes="sqljdbc42.jar"/>
    </library>
    Vérifiez que les attributs suivants comportent les valeurs correctes :
    • Pour user, indiquez le nom de l'utilisateur MS SQL Server employé pour se connecter à la base de données.
    • Pour password, utilisez le mot de passe de l'utilisateur MS SQL Server.
    • Pour databaseName, utilisez le nom de la base de données que vous avez créée à l'étape précédente. Si vous avez utilisé l'exemple de fichier script, ce nom est OAUTH2DB.
    • Pour portNumber, utilisez le numéro de port sur lequel l'instance MS SQL Server est exécutée. Le numéro de port par défaut est 1433.
    • Pour serverName, entrez le nom d'hôte de MS SQL Server.
  6. Dans la section oauthProvider du fichier appConfig.xml, mettez à jour la propriété databaseStore afin de spécifier la source de données MS SQL Server plutôt que la source de données Apache Derby par défaut. La propriété databaseStore doit spécifier le nom de la source de données MS SQL Server, OAUTH2DBDS, dans le présent exemple :
    <oauthProvider id="JazzOP"
    httpsRequired="true"
    autoAuthorize="true"
    customLoginURL="/jazzop/form/login"
    accessTokenLifetime="7201" 
    authorizationGrantLifetime="604801">
    <autoAuthorizeClient>client01</autoAuthorizeClient>
    <databaseStore dataSourceRef="OAUTH2DBDS" /> 
    </oauthProvider>
  7. Sauvegardez et fermez le fichier appConfig.xml.
  8. Copiez les pilotes MS SQL Server sqljdbc42.jar du serveur MS SQL Server dans le répertoire C:\IBM\JazzAuthServer\wlp\usr\shared\config\lib\global.