Автор |
Тема  |
|
niko_san
Јуниор Член

27 Пораки |
Posted - 05/04/2009 : 23:58:24
|
Здраво,
Можеби не го поставувам прашањето во соодветан категорија, но се надевам дека нема да ми замерите.
Се обидувам да извршам MDX query преку T-SQL нешто налик на ова SELECT * FROM OPENQUERY(LOCAL_OLAP,'.... односно SELECT * FROM OPENROWSET( 'MSOLAP.3', 'Integrated Security=SSPI;DATASOURCE=NIK.... и се е супер се до моментот додека MDX query кое го извршувам не ја надмине големината од 8000 карактери, лимитацијата која ја диктираат OPENQUERY/OPENROWSET командите.
Потоа се префрлив на идејата да проблемот го решам со CLR, кое повторно би го повикувал од Т-SQL код,но бидејќи решението т.е моето assembly се референцира до Microsoft.AnalysisServices.AdomdClient.dll, кое не е поддржано од SQL Server 2005(http://msdn.microsoft.com/en-us/library/ms403279.aspx),а притоа користам UNSAFE пермисии,повторно се вратив на почеток.
Дали досега некој од вас имал сличен проблем или пак има некоја сугестија ?
Поздрав, niko_san |
|
Laki
Модератор
  
211 Пораки |
Испратено - 08/04/2009 : 09:01:48
|
Zdravo Niko_san,
Dokolku se rabotese za obicno query, ke ti preporacav da go kreirass kako SP. Vaka, izgleda deka si upaten na CLR.
Koj e tocno problemot sto go imass so assembly-jata ? (iako nekoi ne se poddrzani, moze sepak da se koristat - registracijata i testiranjeto se odgovornost na toj sto gi koristi)
Pozdrav, Robert |
 |
|
Alex
Модератор
  
282 Пораки |
Испратено - 08/04/2009 : 19:15:02
|
Здраво Никола,
Интересна ситуација, дали е неопходно да се стартува MDX query-то од SQL Server 2005 во улога на клиент кон Analysis Services 2005 во улога на сервер ?
Ако не се работи за задолжително линкување на сервери, можеш ли да го премостиш со .NET Web Service кон Analysis Services 2005 како некаков посредник ?
Александар
|
 |
|
niko_san
Јуниор Член

27 Пораки |
Испратено - 09/04/2009 : 18:10:21
|
Александар и Лаки и давјцата извенете што споро одговарам бев зафатен и со други одговорности.
Александар , ситуацијата е ваква, од Т-SQL околина треба да се обратaм за исти влезни праметри до OLTP,OLAP околини, влучително и Data Mining. Под дадени услови/rules над излезот од претходно споменатите сорсови, правам некаков меѓусебен пресек/унија,во зависност од ruls (кои се динамички). На крај како излез од SP се добива еден resultset кој треба да биде пејџиран.
Тоа е генерално.
-- одговор на твоите прашања /* Интересна ситуација, дали е неопходно да се стартува MDX query-то од SQL Server 2005 во улога на клиент кон Analysis Services 2005 во улога на сервер ? */ Јас сум тој што треба да го заврши комплетниот процес, а бидејќи ближниот мој е MS SQL Server 2005, а не и .NET околина, решениетео го барам на страна на SQL, бидејќи теоретски е изводливо, но проблем ми е лимитацијата од 8000 карактери према OLAP.
/* Ако не се работи за задолжително линкување на сервери, можеш ли да го премостиш со .NET Web Service кон Analysis Services 2005 како некаков посредник ? */ Тука би коментирал неколку работи: 1.Линкувањето на серверите не е задолжително. 2.Према трите околини имам 3 динамички SQL,MDX и DMX.И се зависни помеѓу себе односно резултатот од било кој од нив е на некаков начин влез за наредниот што се извршува.Приоритетот односно редоследот е еден од влезните параметри.Значи пак ќе повторам се функционира како подмачкано,проблем ми се само лимитацијат од 8000 -карактери. 3.Идејата за web service ти е ОК, но нажалост јас неможам да го папишам сервисот и можеби побитна работа во целиот муабет е дека CLR од аспект на перформанси би било подобро решение, но и таму имам проблем.
<Се надоврзувам на предходниот муабет а во едно и на прашањата на Лаки>
Идејата околу CLR ми беше да во .NET се напише едностевна функција, која би ја надминала лимитацијата од 8000 карактери влезни парметри на ф-јата би биле име на OLAP сервер,Име на OLAP база евентуално привилегии и МDX query кое не би било генерално лимитирано по број на карактери.Супер, ми помогна пријател да се напише тоа DLL во .NЕТ, но се појави проблем. DLL-to se рефернцира на библиотеката Microsoft.AnalysisServices.AdomdClient.dll и кога се обидувам да го декларирам односно deploy на "моето" DLL (ADOConnector.dll),а притоа пробав со сите типови на пермисии ја добивам секогаш иста грешка
Assembly 'microsoft.analysisservices.adomdclient, version=9.0.242.0, culture=neutral,publickeytoken=89845dcd8080cc91.' was not found in the SQL catalog.
Server Name: NIKO_SAN Error Number: 6503 Severity: 16 State: 12 Line Number: 1
и нормално се обидов да го додадам ( C:\Program Files\Microsoft.NET\ADOMD.NET\90\microsoft.analysisservices.adomdclient) и директно преку managment studio и преку t-sql
CREATE ASSEMBLY [microsoft.analysisservices.adomdclient] FROM 'C:\Program Files\Microsoft.NET\ADOMD.NET\90\microsoft.analysisservices.adomdclient.dll' WITH PERMISSION_SET = UNSAFE;
со сите можни пермисии и во сите ситуации и добивам
-за UNSAFE
CREATE ASSEMBLY for assembly 'Microsoft.AnalysisServices.AdomdClient' failed because assembly 'Microsoft.AnalysisServices.AdomdClient' is not authorized for PERMISSION_SET = UNSAFE.The assembly is authorized when either of the following is true: the database owner (DBO) has UNSAFE ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with UNSAFE ASSEMBLY permission. If you have restored or attached this database, make sure the database owner is mapped to the correct login on this server. If not, use sp_changedbowner to fix the problem. Warning: The SQL Server client assembly 'microsoft.analysisservices.adomdclient, version=9.0.242.0, culture=neutral, publickeytoken=89845dcd8080cc91, processorarchitecture=msil.' you are registering is not fully tested in SQL Server hosted environment. (.Net SqlClient Data Provider)
Server Name: NIKO_SAN Error Number: 10327 Severity: 14 State: 1 Line Number: 1
-- за останатите типови на премисии
CREATE ASSEMBLY failed because type 'ShilohSchemas' in safe assembly 'Microsoft.AnalysisServices.AdomdClient' has a static field 'shilohSchemas'. Attributes of static fields in safe assemblies must be marked readonly in Visual C#, ReadOnly in Visual Basic, or initonly in Visual C++ and intermediate language. Warning: The SQL Server client assembly 'microsoft.analysisservices.adomdclient, version=9.0.242.0, culture=neutral, publickeytoken=89845dcd8080cc91, processorarchitecture=msil.' you are registering is not fully tested in SQL Server hosted environment. (.Net SqlClient Data Provider)
Server Name: NIKO_SAN Error Number: 6211 Severity: 16 State: 1 Line Number: 1
погоре во прпораките од добе-ните грешки односно - the database owner (DBO) has UNSAFE ASSEMBLY permission (false) - database has the TRUSTWORTHY database property (false) - the database owner is mapped to the correct login on this server и ова е исполнето, така да скоро се ми е пробано,во рамките на моите можности, но сеуште имам проблем. :(
Поздрав, niko_san |
 |
|
Laki
Модератор
  
211 Пораки |
Испратено - 09/04/2009 : 20:33:49
|
Zdravo niko_san,
Kaj mene pomina registracijata na adomdclient.dll so
ALTER DATABASE <dbname> SET TRUSTWORTHY ON;
CREATE ASSEMBLY [microsoft.analysisservices.adomdclient] FROM 'C:\.....\microsoft.analysisservices.adomdclient.dll' WITH PERMISSION_SET = UNSAFE;
Pozdrav, Robert
|
 |
|
niko_san
Јуниор Член

27 Пораки |
Испратено - 10/04/2009 : 09:37:34
|
Лаки Роберт, не работи пак го имам истиот проблем т.е истата порака,најверојатно имам проблем со околината, ќе пробам на друга околина или ќе ја преинсталирам тековнава ќе ве информирам како сум поминал.Фала.
Поздрав, niko_san |
Едитирано од - niko_san on 10/04/2009 09:38:44 |
 |
|
Laki
Модератор
  
211 Пораки |
Испратено - 10/04/2009 : 11:57:56
|
"не работи пак го имам истиот проблем т.е истата порака,најверојатно имам проблем со околината, ќе пробам на друга околина или ќе ја преинсталирам тековнава ќе ве информирам како сум поминал.Фала. "
Niko_san,
Proveri dali: select name,is_trustworthy_on from master.sys.databases; vraka vrednost 1 za kolonata is_trustworthy_on na soodvetnata baza.
Dokolku e 0, izvrsi ja naredbata:
ALTER DATABASE <dbname> SET TRUSTWORTHY ON;
Ako eventualno dobiess poraka za greska pri setiranje na trustworthy, postiraj ja porakata na forumot.
Pozdrav, Robert
|
 |
|
niko_san
Јуниор Член

27 Пораки |
Испратено - 10/04/2009 : 12:40:46
|
Роберт,
Сега работи односно ги прикачив двете DLL, ама на друга околина, дефинитивно сум имал некој додадатен проблем, сеуште не сум пишал MDX преку DLL -ot, но ќе ве информирам и за тоа.
Фала најмногу за помошта.
ПС. select name,is_trustworthy_on from master.sys.databases; беше 1,но пак не ми функционираше. Поздрав, Никола
Поздрав, niko_san |
 |
|
Alex
Модератор
  
282 Пораки |
Испратено - 10/04/2009 : 21:33:28
|
Zdravo Nikola,
Dolniot batch :
alter database baza set trustworthy on CREATE ASSEMBLY [microsoft.analysisservices.adomdclient] FROM 'C:\Program Files\Microsoft.NET\ADOMD.NET\100\microsoft.analysisservices.adomdclient.dll' WITH PERMISSION_SET = UNSAFE; CREATE ASSEMBLY [microsoft.analysisservices.adomdclient] FROM 'C:\Program Files\Microsoft.NET\ADOMD.NET\100\microsoft.analysisservices.moetodllzamdx.dll' WITH PERMISSION_SET = UNSAFE; mi projde na SQL 2005/2008 kombinirani na Win 2003, Vista i Win 2008, samo so patekata sekako vnimavam.
Stom si imal greska i pri ALTER DATABASE imenabaza SET TRUSTWORTHY ON mozes li da ja postas porakata kako informacija na forumot?
Pozdrav
Aleksandar |
 |
|
|
Тема  |
|
|
|