powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Программное (xmla) добавление таблицы в DataSourceView.
6 сообщений из 6, страница 1 из 1
Программное (xmla) добавление таблицы в DataSourceView.
    #39616078
Vlad_Molodoj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые Форумчане. Прежде всего перерыл много интернетов и так и не нашел ни одного толкового материала по XMLA.
На сайте Microsoft - только очень краткое описание. Прежде всего - вопрос: где найти толковые материалы по XMLA ?

Ну и конrретный вопрос на котором застрял.
MSAS 2017, сервер "OLAP", источник данных: "MyDS", представление источника данных: "MyDS".
В представлении источника данных уже есть таблицы и представления, в базе есть измерения, кубы.
Необходимо добавить в источник данных еще одну таблицу. Руками в Visual Studio это сделать не сложно.
Проблема в том, что нужно это сделать программно.
Например программно добавить таблицу из двух колонок:
"DocTypes"
ID [char(6)]
Name[char(50)])

Именно "добавить" к существующим.
Скрипт, описанный ниже - нужную таблицу добавляет, а все остальные удаляет. А хотелось, чтобы и все существующие остались и новая была добавлена.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
<Create xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <ParentObject>
        <DatabaseID>Cuses</DatabaseID>
    </ParentObject>
    <ObjectDefinition>
        <DataSourceView xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:ddl500="http://schemas.microsoft.com/analysisservices/2013/engine/500" xmlns:ddl500_500="http://schemas.microsoft.com/analysisservices/2013/engine/500/500">
            <ID>MyDSV</ID>
            <Name>MyDSV</Name>
            <Annotations>
                <Annotation>
                    <Name>http://schemas.microsoft.com/DataWarehouse/Designer/1.0:SchemaRestriction</Name>
                </Annotation>
                <Annotation>
                    <Name>http://schemas.microsoft.com/DataWarehouse/Designer/1.0:RetrieveRelationships</Name>
                    <Value>true</Value>
                </Annotation>
            </Annotations>
            <DataSourceID>MyDS</DataSourceID>
            <Schema>
                <xs:schema id="MyDSV" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
                    <xs:element name="MyDSV" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
                        <xs:complexType>
                            <xs:choice minOccurs="0" maxOccurs="unbounded">
                                <xs:element name="DocTypes" msprop:DbSchemaName="dbo" msprop:TableType="Table">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="ID">
                                                <xs:simpleType>
                                                    <xs:restriction base="xs:string">
                                                        <xs:maxLength value="6" />
                                                    </xs:restriction>
                                                </xs:simpleType>
                                            </xs:element>
                                            <xs:element name="Name">
                                                <xs:simpleType>
                                                    <xs:restriction base="xs:string">
                                                        <xs:maxLength value="50" />
                                                    </xs:restriction>
                                                </xs:simpleType>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                            </xs:choice>
                        </xs:complexType>
                        <xs:unique name="Constraint_ID" msdata:PrimaryKey="true">
                            <xs:selector xpath=".//DocTypes" />
                            <xs:field xpath="ID" />
                        </xs:unique>
                    </xs:element>
                </xs:schema>
              <MyDSV xmlns="" />
            </Schema>
        </DataSourceView>
    </ObjectDefinition>
</Create>
...
Рейтинг: 0 / 0
Программное (xmla) добавление таблицы в DataSourceView.
    #39616097
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_Molodoj,

зачем?
...
Рейтинг: 0 / 0
Программное (xmla) добавление таблицы в DataSourceView.
    #39616114
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в XMLA есть Create, Alter, Delete, у тебя однозначно Create (т.е. пересоздание обьекта с нуля)

кроме того в DSV могут быть связи с другими обьектами

да и XMLA имеет выраженную тенденцию к содержанию полной дефиниции обьекта (а не только добавляемой части) даже при его изменении.

либо вытаскивай сначала оригинальную дефиницию DSV, вноси изменения - потом посылай модифицированный на сервер через Alter.
либо (лучше) используй AMO, там есть Add обьектов в DSV.
...
Рейтинг: 0 / 0
Программное (xmla) добавление таблицы в DataSourceView.
    #39616208
Vlad_Molodoj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkivлибо вытаскивай сначала оригинальную дефиницию DSV, вноси изменения - потом посылай модифицированный на сервер через Alter.

Пугает своей сложностью. Но попробую.

vikkivлибо (лучше) используй AMO, там есть Add обьектов в DSV.


DLL-ка реализующая AMO вроде не ActiveX, а .NET-сборка, начиная с SS2008 или я не прав?
...
Рейтинг: 0 / 0
Программное (xmla) добавление таблицы в DataSourceView.
    #39616521
Vlad_Molodoj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkivлибо вытаскивай сначала оригинальную дефиницию DSV....

А как это сделать программно? В Management Studio- просто... по правой кнопке мыши...

А вот как получить программно это дерево?
...
Рейтинг: 0 / 0
Программное (xmla) добавление таблицы в DataSourceView.
    #39616542
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_Molodoj,

всё то-же AMO : Microsoft.AnalysisServices.Scripter (в примере обьект DataSource а не View т.к. код коротче), PowerShell Code:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")>$null
cls;$svr=New-Object Microsoft.AnalysisServices.Server;$svr.connect(".")
$strb=new-Object System.Text.StringBuilder
$Xml=New-Object System.Xml.XmlTextWriter(new-Object System.IO.StringWriter($strb))
$Xml.Formatting=[System.Xml.Formatting]::Indented
$ScrObj=New-Object Microsoft.AnalysisServices.Scripter
$ScrObj.ScriptAlter([Microsoft.AnalysisServices.MajorObject[]]@($svr.Databases[0].DataSources[0]),$Xml,$false)
$strb.ToString();$svr.disconnect();$svr.dispose();Get-Variable|Remove-Variable -EA 0

потом на сервере можно XMLA выполнить через Execute()
только наверное легче было-бы без возни с XMLA напрямую работать с DataSourceView родными методами и потом Update() обьекта.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Программное (xmla) добавление таблицы в DataSourceView.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (3): Анонимы (1), Bing Bot 4 мин., Yandex Bot 5 мин.
Пользователи онлайн (9): Анонимы (5), Bing Bot, RePredeclared 1 мин., Yandex Bot 5 мин., CerebroSQL 5 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]