In addition to the algorithms that Microsoft SQL Server Analysis Services provides, there are many other algorithms that you can use for data mining. Accordingly, Analysis Services provides a mechanism for "plugging in" algorithms that are created by third parties. As long as the algorithms follow certain standards, you can use them within Analysis Services just as you use the Microsoft algorithms. Plugin algorithms have all the capabilities of algorithms that SQL Server Analysis Services provides.
For a full description of the interfaces that Analysis Services uses to communicate with plugin algorithms, see the samples for creating a custom algorithm and custom model viewer that are published on CodePlex Web site.
To plug an algorithm into Analysis Services, you must implement the following COM interfaces:
Implements an algorithm that produces models, and implements the prediction operations of the resulting models.
Enables browsers to access the content of the models.
Enables the models that the algorithm trains to be saved and loaded by Analysis Services.
Describes the capabilities and input parameters of the algorithm.
Creates instances of the objects that implement the algorithm interface, and provides Analysis Services with access to the algorithm-metadata interface.
Analysis Services uses these COM interfaces to communicate with plugin algorithms. Although plugin algorithms that you use must support the Microsoft OLE DB for Data Mining specification, they do not have to support all the data mining options in the specification. You can use the MINING_SERVICES schema rowset to determine the capabilities of an algorithm. This schema rowset lists the data mining support options for each plugin algorithm provider.
You must register new algorithms before you use them with Analysis Services. To register an algorithm, include the following information in the .ini file of the instance of Analysis Services on which you want to include the algorithms:
The algorithm name
ProgID (this is optional and will only be included for plugin algorithms)
A flag that indicates whether the algorithm is enabled or not
The following code sample illustrates how to register a new algorithm: