go to post Eduard Lebedyuk · Mar 26, 2019 Error shows that it's access/user error:ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT 1808 (0x710) The account used is a computer account. Use your global user account or local user account to access this server.
go to post Eduard Lebedyuk · Mar 26, 2019 Cache runs as a service under SYSTEM account.Check that this user has access to a network drive.
go to post Eduard Lebedyuk · Mar 26, 2019 This applies to properties of a class correct? Not just methods?Correct.You have several solutions:Application level control. You have one table Term { Name, Type} and on the application level you decide for edits to go or not based on type. It is the fastest solution, but you need to write a application code and remember to check for type.Class-level control as described by you.Row-level security. Control access row by row.
go to post Eduard Lebedyuk · Mar 25, 2019 The easiest way is to use JSON_OBJECT for everything. Fastest would be just writing to device from resultset. Combine these approaches to get the performance you need (add this code to Parent class and call Test method): Query Display() As %SQLQuery { SELECT JSON_OBJECT( 'ID':%ID, 'Name': Name, 'Description': Description, 'Children': Example.Parent_GetChildrenInfo(%ID) ) FROM Example.Parent } /// do ##class(Example.Parent).Test() ClassMethod Test(count = 0) { if count>0 { do ##class(Example.Child).%KillExtent() do ..%KillExtent() do ##class(Example.Child).Populate(count,,,,$$$NO) do ..Populate(count,,,,$$$NO) } do ..DisplayFunc().%Display() } ClassMethod GetChildrenInfo(id) As %String [ SqlProc ] { #define CRLF $c(13,10) #define ZENJSISNUM(%val) ($IsValidNum(%val)&&(%val=+(%val))) #define ZENJSNUM(%num) $fnumber(%num,"LON") #; JSON utility macros that use the JSON translation table instead of the JS translation table #define ZENJSTABLE(%format) ("JS"_$S(%format["u":"ML",1:"")) #define ZENJSONTABLE(%format) ("JSON"_$S((%format["u"):"ML",1:"")) #define ZENJSONESCAPE(%str,%format) $S(%format["s":$ZCVT(%str,"O",$$$ZENJSONTABLE(%format)),1:$Replace($ZCVT(%str,"O",$$$ZENJSTABLE(%format)),"\'","'")) #define ZENJSONSTR(%str,%format) (""""_$$$ZENJSONESCAPE(%str,%format)_"""") #define ZENJSONPROP(%prop,%format) $$$ZENJSONSTR(%prop,%format) #define ZENJSONVALUE(%val,%format) $S($$$ZENJSISNUM(%val):$$$ZENJSNUM(%val),$C(0)=(%val)||$ListValid(%val):"""""",1:$$$ZENJSONSTR(%val,%format)) #define ZENJSONPAIR(%pr,%val,%format) $$$ZENJSONPROP(%pr,%format)_":"_$$$ZENJSONVALUE(%val,%format) set out = "[" set ids = ..ChildrenGetStored(id) set ptr=0 set separator=0 while $listnext(ids,ptr,value) { set value = $lg(value) set:separator out = out _ "," set out = out _ "{" set out = out _ $$$ZENJSONPAIR("Name",##class(Example.Child).NameGetStored(value),"") _"," set out = out _ $$$ZENJSONPAIR("Description",##class(Example.Child).DescriptionGetStored(value),"") set out = out _ "}" set separator = 1 } set out = out _ "]" quit out }
go to post Eduard Lebedyuk · Mar 25, 2019 I mean how many children parent has on average? 10? 100? 1000?
go to post Eduard Lebedyuk · Mar 25, 2019 what's the expected average/max cardinality on that relationship?
go to post Eduard Lebedyuk · Mar 25, 2019 I think it would be better to do with REST, but SQLQuery tag can do what you want.
go to post Eduard Lebedyuk · Mar 21, 2019 I once separated one Ensemble database (with code and data) into two databases (one db for code, one db for data) on a running system.It was not difficult actually:Exported code from one databaseCreated new database.Imported code into new database.In a namespace switched code database from old database to a newly created one.Deleted classes from old database.But in my situation the code itself didn't change.
go to post Eduard Lebedyuk · Mar 20, 2019 You're calling an Operation, right?Operations can be called in async mode.
go to post Eduard Lebedyuk · Mar 20, 2019 Another check. Properties can't be SQL reserved words. I often name properties "Date", etc. only to forget that they can't be used in SQL as is only quoted, so I need to go to Class view and rename them to something else.
go to post Eduard Lebedyuk · Mar 20, 2019 The main check we need is parametrization. SQL should not be concattenated from user input, but user input should be passed as an argument.
go to post Eduard Lebedyuk · Mar 20, 2019 Well, what do you want to do with that list? Depending on your use case, the solution may differ.For example to get a list of dashboards execute this query: SELECT * FROM %DeepSee_Dashboard.Definition And to get a list of Pivots execute this one: SELECT * FROM %DeepSee_Dashboard.Pivot And in MDX2JSON project I need to get a list of dashboards visible to the current user. I use custom result set for that (because user may have access to dashes but not to SQL).
go to post Eduard Lebedyuk · Mar 19, 2019 And Tuesday, April 23rd at 11am EDT we would be running an English version of the webinar.Register here.
go to post Eduard Lebedyuk · Mar 18, 2019 Great!Here's zip archive/unarchive support. Maybe you can unite these two projects?
go to post Eduard Lebedyuk · Mar 15, 2019 If it's possible restart the DR Mirror. WIJ should be recreated on startup.
go to post Eduard Lebedyuk · Mar 14, 2019 Right after you get this error, what's in your ^||isc.debug global? zw ^||isc.debug
go to post Eduard Lebedyuk · Mar 14, 2019 The easiest way would be to configure web server on customersdomain.com to act as a reverse proxy. In this case it would proxy requests to yourownserver.com or wherever you need.Another way is to install CSP Gateway on a customersdomain.com. After that connect CSP Gateway to your Cache/Ensemble/InterSystems IRIS instance on yourownserver.com. And connect web server on customersdomain.com to CSP Gateway on customersdomain.com.Advantage of this approach is that static would be served directly from customersdomain.com server.