Beispiel-BDC-Modell: Verbinden mit einer Oracle-Datenbank
Letzte Änderung: Mittwoch, 21. April 2010
Gilt für: SharePoint Server 2010
Das folgende Beispiel veranschaulicht die Verwendung eines Satzes von LobSystem- und LobSystemInstance-Eigenschaften, um Verbindungen zu einer Oracle-Datenbank zu konfigurieren. Weitere Informationen finden Sie unter Vorgehensweise: Verbinden zu einer Oracle-Datenbank unter Verwendung von Business Connectivity Services.
Voraussetzungen
Oracle Client muss in der Serverfarm installiert sein, und der TNS Net Service muss für die Verbindung von Microsoft SharePoint 2010 zu Oracle konfiguriert sein. Die folgenden Schritte erläutern, wie Oracle Client für eine 1m-Farm konfiguriert wird. Diese Schritte sind erforderlich, um den Profilspeicherimport und externe Listen verwenden zu können.
Installieren Sie Oracle Client. Es ist nur die grundlegende Clientinstallation erforderlich.
Starten Sie Oracle Client, und klicken Sie auf Konfigurations- und Migrationstools. Klicken Sie anschließend auf Net-Manager.
Geben Sie einen Namen für den Net Service ein.
Legen Sie das Verbindungsprotokoll fest (TCP/IP).
Geben Sie einen Hostnamen und eine Portnummer für die Datenbank an.
Geben Sie den Oracle-Dienstnamen an, wenn Sie Oracle Client 8i verwenden. Geben Sie für frühere Versionen von Oracle Client die SID an.
Wenn Sie den Profilspeicherimport in einer Farm mit mehreren Computern aktivieren möchten, installieren Sie Oracle Client auf dem Anwendungsserver. Für Profilseiten, externe Listen und Geschäftsdaten-Webparts muss Oracle Client auf jedem Front-End-Webserver installiert werden, auf dem die externe Liste gehostet wird.
Beispiel
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Model xmlns="https://schemas.microsoft.com/windows/2007/BusinessDataCatalog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://schemas.microsoft.com/windows/2007/BusinessDataCatalog
BDCMetadata.xsd" Name="OracleHRDB">
<LobSystems>
<LobSystem Type="Database" Name="OracleHR" DefaultDisplayName="Oracle 2">
<Properties>
<Property Name="WildcardCharacter" Type="System.String">%</Property>
</Properties>
<LobSystemInstances>
<LobSystemInstance Name="Oracle HR Instance">
<Properties>
<Property Name="AuthenticationMode" Type="System.String">RdbCredentials
</Property>
<Property Name="DatabaseAccessProvider" Type="System.String">Oracle
</Property>
<Property Name="RdbConnection Data Source" Type="System.String">
YOUR_ORACLE_NET_SERVICE_NAME_HERE</Property>
<Property Name="SsoApplicationId" Type="System.String">
SECURESTORE_ORACLE_APP_ID_HERE</Property>
<!-- Server ship
<Property Name="SsoProviderImplementation"
Type="System.String">
Microsoft.Office.SecureStoreService.Server.SecureStoreProvider,
Microsoft.Office.SecureStoreService, Version=14.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c</Property> -->
<!-- Client Ship -->
<Property Name="SsoProviderImplementation"
Type="System.String">
Microsoft.Office.BusinessData.Infrastructure.SecureStore.LocalSecureStoreProvider,
Microsoft.Office.BusinessData, Version=14.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c</Property>
</Properties>
</LobSystemInstance>
</LobSystemInstances>
<Entities>
<Entity EstimatedInstanceCount="10000" Name="Employee"
DefaultDisplayName="Employee" Namespace="HR.OracleModel" Version="1.0.0.0">
<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 EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO
FROM SCOTT.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>
<DefaultValue MethodInstanceName="EmployeeFinderInstance"
Type="System.String">%</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<Parameter Direction="Return" Name="Employees">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
IsCollection="true" Name="Employees">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, System.Data,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
Name="Employee">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Decimal" Name="EMPNO" />
<TypeDescriptor TypeName="System.String" ReadOnly ="true"
IdentifierName="EmployeeName" Name="ENAME" />
<TypeDescriptor TypeName="System.String" Name="JOB" />
<TypeDescriptor TypeName="System.Decimal" Name="MGR" />
<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" >
<AccessControlList>
<AccessControlEntry Principal="redmond\domain users">
<Right BdcRight="Execute"/>
<Right BdcRight="Edit"/>
<Right BdcRight="SetPermissions"/>
<Right BdcRight="SelectableInClients"/>
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
<MethodInstance Type="SpecificFinder" ReturnParameterName="Employees"
ReturnTypeDescriptorName="Employee" ReturnTypeDescriptorLevel="1"
Name="EmployeeSpecificFinderInstance" >
<AccessControlList>
<AccessControlEntry Principal="redmond\domain users">
<Right BdcRight="Execute"/>
<Right BdcRight="Edit"/>
<Right BdcRight="SetPermissions"/>
<Right BdcRight="SelectableInClients"/>
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
<MethodInstance Type="IdEnumerator" ReturnParameterName="Employees"
ReturnTypeDescriptorName="Employees" ReturnTypeDescriptorLevel="0"
Name="IdEnumeratorInstance" >
<AccessControlList>
<AccessControlEntry Principal="redmond\domain users">
<Right BdcRight="Execute"/>
<Right BdcRight="Edit"/>
<Right BdcRight="SetPermissions"/>
<Right BdcRight="SelectableInClients"/>
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
<Method Name="Update" DefaultDisplayName="EmployeeUpdater">
<Properties>
<Property Name="RdbCommandType" Type="System.Data.CommandType, System.Data,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
Text</Property>
<Property Name="RdbCommandText" Type="System.String">
UPDATE SCOTT.EMP
SET EMPNO=:EmpNo,JOB=:Job,MGR=:Mgr,HIREDATE=:HireDate,
SAL=:Sal,COMM=:Comm,DEPTNO=:DeptNo
WHERE ENAME=:Name</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="redmond\domain users">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<Parameters>
<Parameter Direction="In" Name=":EmpNo">
<TypeDescriptor TypeName="System.Decimal" UpdaterField="true"
Name="EMPNO" />
</Parameter>
<Parameter Direction="In" Name=":Name">
<TypeDescriptor TypeName="System.String" IdentifierName="EmployeeName"
Name="EmployeeName" >
</TypeDescriptor>
</Parameter>
<Parameter Direction="In" Name=":Job">
<TypeDescriptor TypeName="System.String" UpdaterField="true"
Name="JOB" />
</Parameter>
<Parameter Direction="In" Name=":Mgr">
<TypeDescriptor TypeName="System.Decimal" UpdaterField="true"
Name="MGR" />
</Parameter>
<Parameter Direction="In" Name=":HireDate">
<TypeDescriptor TypeName="System.Nullable`1[[System.DateTime, mscorlib,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
UpdaterField="true" Name="HIREDATE" />
</Parameter>
<Parameter Direction="In" Name=":Sal">
<TypeDescriptor TypeName="System.Nullable`1[[System.Decimal, mscorlib,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
UpdaterField="true" Name="SAL" />
</Parameter>
<Parameter Direction="In" Name=":Comm">
<TypeDescriptor TypeName="System.Nullable`1[[System.Decimal, mscorlib,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
UpdaterField="true" Name="COMM">
<Properties>
<Property Name="Decimal Digits" Type="System.Int32">9</Property>
</Properties>
</TypeDescriptor>
</Parameter>
<Parameter Direction="In" Name=":Deptno">
<TypeDescriptor TypeName="System.Nullable`1[[System.Decimal, mscorlib,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
UpdaterField="true" Name="DEPTNO">
<Properties>
<Property Name="Decimal Digits" Type="System.Int32">9</Property>
</Properties>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Updater" Name="Update"
DefaultDisplayName="SQLAllTypes Update">
<AccessControlList>
<AccessControlEntry Principal="redmond\domain users">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
<Method Name="Delete" DefaultDisplayName="EmployeeDelete">
<Properties>
<Property Name="RdbCommandText" Type="System.String">
DELETE FROM SCOTT.EMP WHERE ENAME = :Name</Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType, System.Data,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
Text</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="redmond\domain users">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
<Parameters>
<Parameter Direction="In" Name=":Name">
<TypeDescriptor TypeName="System.String" IdentifierName="EmployeeName"
Name="EmployeeName" >
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Deleter" Name="Delete" DefaultDisplayName="Employee
Delete">
<AccessControlList>
<AccessControlEntry Principal="redmond\domain users">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SetPermissions" />
<Right BdcRight="SelectableInClients" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
</Methods>
</Entity>
</Entities>
</LobSystem>
</LobSystems>
</Model>