Procédure : adapter les échantillons pour se connecter aux bases de données Oracle et autres
Le catalogue de données métiers se connecte et fournit des données métiers à partir des bases de données suivantes :
Microsoft SQL Server
Oracle
OLE DB
ODBC
L'échantillon AdventureWorks2000 explique comment utiliser de façon basique le catalogue de données métiers pour afficher des données métiers d'une base de données SQL Server. Lorsque vous utilisez d'autres bases de données, telles que Oracle, OLE DB et ODBC, suivez exactement les mêmes procédures. Nous vous recommandons de commencer avec les métadonnées de l'échantillon AdventureWorks 2000 et de les adapter à ces systèmes. Cependant, lorsque vous adaptez les métadonnées AdventureWorks ou écrivez de nouvelles métadonnées pour ces systèmes, gardez à l'esprit les points suivants :
Le caractère générique peut être différent dans ces systèmes. SQL Server utilise l'astérisque (*). Dans les systèmes Oracle et autres, le caractère générique est généralement le symbole de pourcentage (%). Déterminez le caractère générique utilisé par votre système et modifiez-le dans la propriété WildcardCharacter de l'indicateur <LobSystem>.
La syntaxe SQL Oracle nécessite la spécification de paramètres dans votre requête en les faisant précéder du signe deux-points (:) plutôt que du symbole arobase (@). Assurez-vous de les définir correctement dans les instructions SQL de vos métadonnées.
Oracle exige l'ID utilisateur et le mot de passe dans la chaîne de connexion, ce qui signifie :
Vous devez configurer une définition de l'entreprise dans SSO avec les informations d'identification Oracle.
Utilisez AuthenticationMode de RdbCredentials.
Vérifiez que le service de l'authentification unique Microsoft est démarré sur tous les serveurs de la batterie et configurez le démarrage automatique.
Vous ne pouvez pas utiliser les propriétés "ID utilisateur RdbConnection" et "Mot de passe RdbConnection" du fait que ces valeurs sont fournies par l'authentification unique. Si vous les spécifiez, elles sont simplement ignorées. Vous devez utiliser l'authentification unique pour fournir les informations d'identification Oracle.
L'authentification unique nécessite la connectivité RPC entre les serveurs. Vérifiez que les ports nécessaires (135, etc.) sont ouverts. Vous pouvez utiliser l'article 167260 de la base de connaissances comme un guide sur la procédure de vérification de la connectivité RPC en utilisant les utilitaires rpings.exe et rpingc.exe du Kit de ressources Microsoft Windows 2003 Server.
Exemple
Cet exemple montre comment définir les propriétés LobSystemInstance d'une base de données Oracle qui se connecte via une authentification unique. FEEDSTORE doit correspondre au nom du service réseau TNS. OracleDb doit correspondre au nom de la définition de l'application d'entreprise que vous avez configuré sans SSO.
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<LobSystem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Type="Database" Version="2.1.1.5" Name="Oracle" xmlns="https://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
<Properties>
<Property Name="WildcardCharacter" Type="System.String">%</Property>
</Properties>
<LobSystemInstances>
<LobSystemInstance Name="Oracle Sys Instance">
<Properties>
<Property Name="AuthenticationMode" Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAuthenticationMode">RdbCredentials</Property>
<Property Name="DatabaseAccessProvider" Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAccessProvider">Oracle</Property>
<Property Name="RdbConnection Data Source" Type="System.String">FEEDSTORE</Property>
<Property Name="RdbConnection Pooling" Type="System.String">false</Property>
<Property Name="SsoApplicationId" Type="System.String">OracleDb</Property>
<Property Name="WildcardCharacter" Type="System.String">%</Property>
</Properties>
</LobSystemInstance>
</LobSystemInstances>
<Entities>
<Entity EstimatedInstanceCount="10000" Name="Employee">
<Properties>
<Property Name="Title" Type="System.String">EName</Property>
</Properties>
<Identifiers>
<Identifier TypeName="System.String" Name="EmployeeName" />
</Identifiers>
<Methods>
<Method Name="EmployeeFinder">
<Properties>
<Property Name="RdbCommandText" Type="System.String">SELECT * FROM EMP WHERE ENAME LIKE :Name ORDER BY EMPNO</Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptor Type="Wildcard" Name="EmployeeName" />
</FilterDescriptors>
<Parameters>
<Parameter Direction="In" Name=":Name">
<TypeDescriptor TypeName="System.String" IdentifierName="EmployeeName" AssociatedFilter="EmployeeName" Name="EmployeeName">
<DefaultValues>
<DefaultValue MethodInstanceName="IdEnumeratorInstance" Type="System.String">%</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<Parameter Direction="Return" Name="Employees">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="Employees">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="Employee">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Decimal" Name="EmpNO" />
<TypeDescriptor TypeName="System.String" IdentifierName="EmployeeName" Name="EName" />
<TypeDescriptor TypeName="System.String" Name="JOB" />
<TypeDescriptor TypeName="System.String" Name="MGR" />
<TypeDescriptor TypeName="System.String" Name="Job" />
<TypeDescriptor TypeName="System.DateTime" Name="HireDate" />
<TypeDescriptor TypeName="System.Decimal" Name="SAL" />
<TypeDescriptor TypeName="System.Decimal" Name="COMM" />
<TypeDescriptor TypeName="System.Decimal" Name="DEPTNo" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Finder" ReturnParameterName="Employees" ReturnTypeDescriptorName="Employees" ReturnTypeDescriptorLevel="0" Name="EmployeeFinderInstance" />
<MethodInstance Type="SpecificFinder" ReturnParameterName="Employees" ReturnTypeDescriptorName="Employees" ReturnTypeDescriptorLevel="0" Name="EmployeeSpecificFinderInstance" />
<MethodInstance Type="IdEnumerator" ReturnParameterName="Employees" ReturnTypeDescriptorName="Employees" ReturnTypeDescriptorLevel="0" Name="IdEnumeratorInstance" />
</MethodInstances>
</Method>
</Methods>
</Entity>
</Entities>
</LobSystem>