go to post Pete Greskoff · Jan 3, 2019 Mike,Let me try to clarify some things here. You currently have a ^Person global with data in it. What others are referring to are objects that would be similar to that global. The best way (IMO) to do this would be to convert the data into objects. First, create and compile a class: Class User.TestPopulate Extends %Persistent{Property Name As %String;Property Gender As %String;Property Role As %String;}In my example, I populated a global:%SYS>s ^Person(1) = "Pete|MALE|Senior Support Specialist"%SYS>s ^Person(2) = "Mike|MALE|Developer"The default global for data storage for your new class will just be <PACKAGE>.<CLASS>D and the index global will be I instead of D. So, for the data, you're looking at, in my case:%SYS>zw ^User.TestPopulateD--> This is empty, because I haven't populated the object at all. Now, I wrote a simple routine to iterate through the ^Person global (no matter how large it is, this will work). Note this has minimal error checking: TestPopulates x = ""f {s x = $o(^Person(x),1,y)q:x=""s personOBJ = ##class(User.TestPopulate).%New()s personOBJ.Name = $p(y,"|",1)s personOBJ.Gender = $p(y,"|",2)s personOBJ.Role = $p(y,"|",3)s sc = personOBJ.%Save()if (sc'=1) {d $system.OBJ.DisplayError(sc)}w !,y}Note this also just prints out the value of each person as it goes. Now, I run that routine, and then take a look at the 'D' global again:%SYS>d ^TestPopulate Pete|MALE|Senior Support SpecialistMike|MALE|Developer%SYS>zw ^User.TestPopulateD^User.TestPopulateD=2^User.TestPopulateD(1)=$lb("","Pete","MALE","Senior Support Specialist")^User.TestPopulateD(2)=$lb("","Mike","MALE","Developer")Now, if I want to access an individual record, I can via objects:%SYS>s me = ##class(User.TestPopulate).%OpenId(1)%SYS>w me.NamePeteFinally, if you want to access it with SQL, you can, now that it's populated in an object (note I had to use SQLUser instead of User because I chose 'User' as my package name):%SYS>d $system.SQL.Shell()SQL Command Line Shell---------------------------------------------------- The command prefix is currently set to: <<nothing>>.Enter q to quit, ? for help.%SYS>>select * from SQLUser.TestPopulate1. select * from SQLUser.TestPopulate ID Gender Name Role1 MALE Pete Senior Support Specialist2 MALE Mike Developer 2 Rows(s) Affectedstatement prepare time(s)/globals/lines/disk: 0.0819s/50437/298608/17ms execute time(s)/globals/lines/disk: 0.0005s/4/854/1ms cached query class: %sqlcq.pSYS.cls6---------------------------------------------------------------------------Hope this helps
go to post Pete Greskoff · Dec 12, 2018 I agree with the previous answers as a good starting point. If you get past there and want to set up a mirror, take a look at this post.
go to post Pete Greskoff · Nov 14, 2018 I have a few questions:1) Why exactly do you need to call these via REST? What scenario do you have where running something like the example code in the documentation wouldn't work for you?2) Assuming you do have a good reason to make these calls via REST, which part do you need help with? Creating the REST endpoint? Making the REST request? Writing the code on the back end to run the appropriate commands?
go to post Pete Greskoff · Nov 6, 2018 You probably want to check out this Global Summit presentation from this year. The entire presentation is useful, but you might want to skip ahead to slide 70 for your purposes.
go to post Pete Greskoff · Nov 1, 2018 I don't think the developer community is the best place for a question like that. I suggest contacting your InterSystems sales rep.
go to post Pete Greskoff · Oct 30, 2018 I'm still not sure what you mean. I suggest giving either your Sales Engineer or the WRC a call to discuss this.
go to post Pete Greskoff · Oct 29, 2018 I'll tackle question 2:For deciding which backups to take in an ECP environment, it really depends on your setup. In a somewhat typical setup, you'd have the data on the database server, and code on the application servers. In that case, you would definitely want to back up the database server (since that's where the data is), but you may not need to back up the application servers if you have some other repository (such as source control) for your code base. I am not quite sure what you mean by having multiple data servers with the same instance name and database name. Can you elaborate? It is certainly possible to mirror your database server in an ECP environment.Finally, I just want to note that you are talking about sharding, but tagged this as a Caché post. Only InterSystems IRIS supports sharding, not Caché. You probably want to tag this post with IRIS instead of Caché (or both, as your 2 questions really are quite separate).
go to post Pete Greskoff · Oct 29, 2018 I see you posted this as its own question here. I'll let others weigh in there.
go to post Pete Greskoff · Oct 26, 2018 I suggest following the same steps I suggested previously and opening an issue with the WRC.
go to post Pete Greskoff · Oct 25, 2018 There are no built-in REST APIs to call the API's, but you could easily write one.All the methods to retrieve the list and add/remove databases from the list are documented in the Backup.General class here. As John mentioned, there is no way to freeze or thaw individual databases; it is a system-wide operation.
go to post Pete Greskoff · Oct 19, 2018 There are a few good suggestions here, and I just want to add another one. You could write custom code as a wrapper to call API's for whatever you're changing (whether adding users, tasks, etc.). Then, on all mirror members, you could configure a REST service that would accept requests to do the same (aka call your wrappers based on the request payload). Then, when you call a wrapper to, for instance, add a user, your code would call the REST service on the other mirror members, which would trigger adding that user on those members, and call the Security.Users Create method to add the user on the local instance.
go to post Pete Greskoff · Sep 18, 2018 From what I've gathered from Oracle, CDC is just a way to replicate data onto another system. If that's what you're looking for, Caché mirroring is the answer you're looking for. Take a look at:https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...That's the general mirroring information for how it works. Contained in that chapter is information about reporting asyncs, which is what it sounds like Oracle's CDC is for:https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...Though, it looks like Oracle replicates data to a different database on the same system, which mirroring will not allow. If you want to do replication to a different database on the same instance (though I can't think of a use case for that), you could use shadowing instead:https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...
go to post Pete Greskoff · Jul 3, 2018 For what it's worth, the best way to find the details as to why you are getting this error in the future is to use the Audit Log. Here is the documentation on auditing. More details are in that doc, but the basic steps to look at this are:1) Enable auditing2) Go to Configure System Events and make sure the LoginFailure and Protect events are enabled3) Reproduce the failed login4) Look at the details of the audit log entry for the LoginFailure or Protect event that presumably occurred when you failed to log in5) If you don't want auditing on or those events audited, reset the initial state of auditing by either turning off those events or auditing in general
go to post Pete Greskoff · Jun 22, 2018 You can assign a custom resource to the Message Viewer, per this documentation. See screenshot below (the assign button). You'd just need to make sure users that actually need to be able to use the message viewer have access to whatever custom resource you assign. There's also more information about the Ensemble Management Portal security in general in this documentation, which might help.
go to post Pete Greskoff · Jun 18, 2018 OK, that should be fine then. I thought maybe you were having an issue with an endian-ness change of the platform, but obviously that's not it. I'd again suggest opening a WRC issue. Try following Robert's suggestion, then collecting the cconsole.log and SYSLOG along with any error output you get from mounting. You could also post it here if you prefer.
go to post Pete Greskoff · Jun 18, 2018 Did the file come from the same Operating System? Do you get an error when you try to mount it, either when you try to mount it or in the cconsole.log? You may want to open a WRC issue to help with this. It would also help to have the Caché SYSLOG (do ^SYSLOG from the %SYS namespace), as errors that occur while mounting files are typically at the system level, which would get logged there.
go to post Pete Greskoff · Jun 5, 2018 It is definitely worth pursuing if you want to use it. Contact the WRC and give us the version you're using as well as the output from the failed install, and we'll be happy to help. FWIW, I've set it up on Windows and gotten it to work, but not on Mac.
go to post Pete Greskoff · Jun 4, 2018 Right, mirroring already takes care of the 'system availability', so this setting is forced to be turned on to also protect 'system integrity' (not to mention so mirroring can more easily detect failures).I would say though that whether you need this turned on in a non-mirrored setup entirely depends on your application. You may have a major preference towards system availability over system integrity, though I'd say most setups that care enough about the data to journal it would likely want to have this Freeze on error turned on.
go to post Pete Greskoff · May 23, 2018 Possibly not a solution to this problem, but this is a relevant documentation page.