Hello Kathy,

This would be an installer/OS level issue so not something that SQL could help with. Do you still have the install kit and can you try to use that to uninstall? If you check the Windows event log do you see any errors from your first (or subsequent) uninstall attempts?

Can you check if there are any pending installation/uninstalls? Perhaps you could try restarting the server and then trying to uninstall?

Out of curiosity, have there been other instances installed/uninstalled on the same server?

Hello Matthew,

Out of curiosity, what are some examples of things that you don't want shared within one instance?

I'm not sure about the per-instance overhead, I don't know how common of a scenario that is, so you may want to test it out. With multiple instances, you would have multiple write/journal daemons. I wonder if your current setup benefits from the shared buffer pool, or if your separate namespaces are handling totally different sets of data.

Re: the memory split, I think that depends on how much activity you're running through each instance. If you think they'll all need the same amount of memory, an even split might be fine.

Is there any consideration to splitting out to separate servers? It sounds like isolation/granularity are some of the things you are looking for, and separate servers would help with that.

Is this what you mean by Rose? It's not a technology I'm familiar with, but from this page and your description it sounds like an HA cluster with shared storage:

https://www.rosedata.com/index_en.php/Prodetail/index/proid/1

Do you have any specific questions about this setup?

Can you provide more detail on what kind of disaster events you are looking to handle? What is your desired behavior? Basically, I would suggest thinking about different disaster scenarios and how this environment would react.

Failover Strategies for High Availability

Here are the docs regarding different HA strategies including HA clustering and mirroring. The main point they highlight for a HA cluster with shared storage is that the disk then becomes a single point of failure. Adding a mirror instance on separate hardware provides an option if your RoseHA disk fails.

@wenjie zhao 

If I'm interpreting your question (and its translation) correctly, it sounds like you will have multiple mirror members on the same disk array. Is this a mirror member in the same mirror or different?

If the same, I think part of the value of a mirror is that you can failover if a problem happens to a piece of hardware, for example. If both mirrors are running on one disk array, if that disk array has a problem, you can't really failover.

If a separate mirror, then you could have two separate mirrors failing over if your 1 disk array has a problem - if that's acceptable to you, I don't necessarily see a problem.

Realistically, it's hard to provide advice without knowing exactly the architecture you are considering and the types of problems you want to be prepared for. I'd refer back to my initial reply, which is that I'd think about mirroring as I would any other HA architecture and think about what will happen if single items fail - generally, I think you would want your HA to be able to work around a single piece failing.

Hey Matthew,

No technical suggestions from me, but I would say that there are pros/cons to file / global streams which have been covered quite well by the other commenters. For the performance concern in particular, it is difficult to compare different environments and use patterns. It might be helpful to test using file / global streams and see how the performance for your expected stream usage, combined with your system activity, plays into your decision to go with one or the other.

Hello Brian,

It is interesting to know that this might be implemented at some point.

My first thought is to recommend not compiling a running production, though I understand that's not "helpful" advice. When you compile a business component it should be stopped, and I assume similar best practices apply to compiling a production.

Can you explain why the production needs to be recompiled while active? Maybe that will help somebody present a workaround.

Hello T,

Some settings such as AlertOnError aren't in Ens.Config.Item but are stored in the production definition class.

edit: see my comment below, these settings are in the production definition, but you seem to be able to modify them using Ens.Config.Item as well.

Perhaps you could use the System Default Setting?

For something like this, especially with urgency, I'd recommend reaching out to your InterSystems rep or the WRC.

I agree that Danny's suggestion to review where your licenses are being used is a good starting point.

Since you mention using this license across multiple servers, I would consider the different ways your developers are connecting to Caché. If a developer has Studio, the management portal, and a terminal session open, they are probably using more than 1 license. Even with a limit of 2 developers per server, if 6 developers are on the 3 servers connecting multiple ways, you could surpass a 10 user limit.

You may need a more robust license to support your team's usage patterns.

Hello T,

I see that Kurro has already provided some samples but you are still waiting on the first question.

I'm not sure if my understanding of your desire is correct, but individual rules in a routing rule are a part of the overarching rule class. While it is technically possible to programmatically edit a class, my personal feeling is that this approach feels more complicated than necessary. To make changes to individual rules it might make more sense to use a source control solution and deploy the version of the rule class that has the rules that you want.

Another benefit of the source control methodology is that to make changes in prod, rather than editing production code in a live system, you would be choosing between deployment of (hopefully) tested versions of the rule.

Hello Andre,

Take a look at these two other posts with very similar questions, maybe you can find something that works for you. Unfortunately, there doesn't seem to be a built-in random function on the SQL side (though on the Objectscript side there is $RANDOM.)

https://community.intersystems.com/post/how-select-random-row-table

https://community.intersystems.com/post/custom-query-returns-random-number-columns

Hello again Fábio,

These errors are one part of the picture. It would probably be beneficial to open a ticket with the WRC so they can look into these errors and your performance issues to see if they are related/separate.

Do you know what queries are triggering these errors? w3wp.exe is an IIS process but I'm not familiar with EXTRService.exe or KIORAS. Perhaps the IP addresses can also help you narrow down the source.

The <READ> errors indicate something like a problem reading from the socket, but that doesn't explain the cause. There may be other logs you can review in your environment to help explain this.