Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 MSAS 2016. CLR function with AMO.  [new]
Oleon
Member

Откуда:
Сообщений: 341
Добрый день!

Хочу написать CLR табличную функцию для SQL Server 2016, которая будет возвращать список групп мер и список партиций. При попытке сделать Publish на сервер получаю ошибку:

(62,1): SQL72014: .Net SqlClient Data Provider: Msg 6503, Level 16, State 12, Line 1 Assembly 'microsoft.analysisservices, version=13.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91.' was not found in the SQL catalog.

Код такой:
using System;
using System.Collections;
using System.Text;
using Microsoft.AnalysisServices;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.IO;

public partial class UserDefinedFunctions
{
    private class TableType
    {
        public SqlString MGName{ get; set; }
        public SqlString PartitionName { get; set; }
        public SqlString PartitionSQL { get; set; }
    }

    public static void TableUDF_FillRow(
        object tableTypeObject,
        out SqlString MGName,
        out SqlString PartitionName,
        out SqlString PartitionSQL)
    {
        var tableType = (TableType)tableTypeObject;

        MGName = tableType.MGName;
        PartitionName = tableType.PartitionName;
        PartitionSQL = tableType.PartitionSQL;
    }

    [SqlFunction(
        DataAccess = DataAccessKind.Read,
        TableDefinition = "MGName nvarchar(100), PartitionID nvarchar(100), PartitionSQL nvarchar(100)",
        FillRowMethodName = "TableUDF_FillRow")]
    public static IEnumerable TableUDF(SqlString Text)
    {
        ArrayList tableResults = new ArrayList();
        Server SSAS_Svr = new Server();
        SSAS_Svr.Connect("Data Source=olap-drp;Initial Catalog=FxCube;Integrated Security=SSPI;");
        if ((SSAS_Svr != null) && (SSAS_Svr.Connected))
        {
            // Find the database
            Database UW_DB = SSAS_Svr.Databases.FindByName("FxCube");
            if (UW_DB != null)
            {
                Cube UW_Cube = UW_DB.Cubes.FindByName("fxCube");
                if (UW_Cube != null)
                {
                    // Find the Measure Group
                    foreach (MeasureGroup MG in UW_Cube.MeasureGroups)
                    {
                        foreach (Partition P in MG.Partitions)
                        {

                            tableResults.Add(new TableType { MGName = MG.Name, PartitionName = P.Name, PartitionSQL = ((QueryBinding)P.Source).QueryDefinition.ToString()});
                            SqlPipe objSqlPipe = SqlContext.Pipe;
                            objSqlPipe.Send("Hi! MG.Name");
                        }
                    }
                }
            }

            // Disconnect from AS Server
            SSAS_Svr.Disconnect();
        }
        tableResults.Add(new TableType { MGName = "Test1", PartitionName = "Test2", PartitionSQL = "Test3" });
        tableResults.Add(new TableType {MGName = "Test4", PartitionName = "Test5", PartitionSQL = "Test6" });
        return tableResults;
    }
}


Не пойму куда копать. В гугле не смог найти ответ.
27 мар 18, 17:09    [21290784]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2199
Oleon,

Например, it may caused by AMO missing прямо в гугле.

В общем, нужно скачать и установить на тот сервер, где MSSQL и куда делаете publish, отдельно ADOMD.NET для 2016-го.

вот еще хорошая статья старая.
27 мар 18, 17:21    [21290842]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Oleon
Member

Откуда:
Сообщений: 341
Не помогает.

Версия сервера и операционной системы:
Microsoft SQL Server 2016 (SP1-GDR) (KB4019089) - 13.0.4206.0 (X64) Jul 6 2017 07:55:03 Copyright (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2016 Standard 6.3 <X64> (Build 14393: )

Установил отсюда https://www.microsoft.com/en-us/download/details.aspx?id=52676

ENU\x64\SQL_AS_AMO.msi

Перезапустил Analysis

Ошибка та же самая, не помогло.


А как можно увидеть установлен ли эта Assembly или нет?
28 мар 18, 00:23    [21291700]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Oleon
Member

Откуда:
Сообщений: 341
В папке, которая приведена по первой ссылке в гугле, вижу Analysis Services 10.0.0.0

К сообщению приложен файл. Размер - 102Kb
28 мар 18, 00:44    [21291715]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2199
Oleon,

Ну тогда в %Windows%\Microsoft.NET\assembly\GAC_MSIL\ удалите каталог "Microsoft.AnalysisServices.DeploymentEngine". И все заработает.
28 мар 18, 00:47    [21291719]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Oleon
Member

Откуда:
Сообщений: 341
ENU\x64\SQL_AS_AMO.msi тоже установил, не помогло.
28 мар 18, 00:56    [21291724]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Oleon
Member

Откуда:
Сообщений: 341
Такой папки нет

К сообщению приложен файл. Размер - 132Kb
28 мар 18, 09:36    [21292150]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2199
Oleon
Такой папки нет

Значит, Вы недоустановили .NET 4.6.

Там, где Вы разрабатываете - на ПК или сервере - точно есть локально установленный SQL 2016? Если нет - поставьте просто пустой инстанс, с SQL службой и SSAS службой, ошибки уйдут.
28 мар 18, 19:14    [21294380]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Oleon
Member

Откуда:
Сообщений: 341


К сообщению приложен файл. Размер - 30Kb
29 мар 18, 11:32    [21295503]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Oleon
Member

Откуда:
Сообщений: 341


К сообщению приложен файл. Размер - 20Kb
29 мар 18, 11:33    [21295507]     Ответить | Цитировать Сообщить модератору
 Re: MSAS 2016. CLR function with AMO.  [new]
Oleon
Member

Откуда:
Сообщений: 341


К сообщению приложен файл. Размер - 28Kb
29 мар 18, 11:34    [21295513]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить