Where can I download the Cache ODBC drivers?
Where can I download the Cache ODBC drivers for Windows?
I need to connect to a cache database by odbc but the FPTs that I have found do not work,
could you tell me where to download the ODBC drivers
InterSystems Caché is a multi-model DBMS and application server. See more details here.
Where can I download the Cache ODBC drivers for Windows?
I need to connect to a cache database by odbc but the FPTs that I have found do not work,
could you tell me where to download the ODBC drivers
I like to install Cache Evaluation version for learning purpose. Could you please share the download link to install it? I appreciate any help you all provide. Thanks.
We are hiring! 100% Remote W2 Contract | 3-6+ Months (numerous extensions likely)
Two Roles:
🔹InterSystems Engineer
🔹Epic Bridges Certified/InterSystems Engineer
Having solid experience with the below:
Hello,
We are accessing an InterSystems Cacha database from Microsoft SQL Server using a linked server over ODBC (ODBC35). Queries are executed using OPENQUERY.
On the SQL Server side, there is a linked server property called Query Timeout. By default it is set to 0 (no timeout). We are considering setting it to 15 seconds and would like to understand how Cache behaves in this scenario.
Hello. Here is
XData ReportDefinition [ XMLNamespace = "http://www.intersystems.com/zen/report/definition" ]
{
<report xmlns="http://www.intersystems.com/zen/report/definition" name='bills' runonce="true">
<attribute name='runTime' expression='$ZDT($H,3)' />
<attribute name='runBy' expression='..GetUserName()' />
<attribute name='author' expression='..ReportAuthor'/>
<group name='bills' OnCreateResultSet="CreateRS">
<parameter name="MonthDt" expression="..Month"/>
<parameter name="Company" expression
Hello
How to hide a table completely in pdf generation when a row is empty?
A table has style with borders
<item field="TotalSum" suppressEmpty="1" />
<item field="TotalAvSum" suppressEmpty="1" />
</table>
With removeEmpty="1" and suppressEmpty="1" all data are hidden when a row is empty but top and bottom borders are remain on the page.
How to hide also table's top and bottom borders when a data row is empty?
I have a Photo that is stored as an VARBINARY within MS SQL. I would like to Select the data into a EnsLib.SQL.Snapshot, is that possible? I would take it out of the Snapshot and send it to a %Stream so it can be written out to a file.
You probably know this situation:
Some time ago, you found a very special $ZU function for a very specific type of problem. Some kind of mystical formula. It became popular and was used by many developers throughout your code and across all your installations.
Several versions and updates later, you are informed by ISC that your mystical $ZU is deprecated and no longer supported. You are advised to replace it with a new $something().
So, how do you find and document the usage of this mysterious code?
It might be located in classes, in MAC, INT, or INC code.
You send an HTTP request and get back an HTTP error but with an HTML error page which you didn't expect... what's happening?... 🤔
Specifically for example, perhaps you tried to READ a FHIR Resource (e.g. /Patient/123) and you get back a 404 error page, even though with other Patient IDs, you get back the Resource payload, so "the page" definitely does exist... why should you be getting a 404 error page? 🙄
Hello!!!
Data migration often sounds like a simple "move data from A to B task" until you actually do it. In reality, it is a complex process that blends planning, validation, testing, and technical precision.
Over several projects where I handled data migration into a HIS which runs on IRIS (TrakCare), I realized that success comes from a mix of discipline and automation.
Here are a few points which I want to highlight.
1. Start with a Defined Data Format.
Before you even open your first file, make sure everyone, especially data providers, clearly understands the exact data format you expect. Defining templates early avoids unnecessary bank-and-forth and rework later.
While Excel or CSV formats are common, I personally feel using a tab-delimited text file (.txt) for data upload is best. It's lightweight, consistent, and avoids issues with commas inside text fields.
PatID DOB Gender AdmDate
10001 2000-01-02 M 2025-10-01
10002 1998-01-05 F 2025-10-05
10005 1980-08-23 M 2025-10-15Make sure that the date formats given in the file is correct and constant throughout the file because all these files are usually converted from an Excel file and an Basic excel user might make mistakes while giving you the date formats wrong. Wrong date formats can irritate you while converting into horolog.
The Power of Indexing in Database Tables
When working with databases, most developers understand the concept of an index and why it's used: to speed up data retrieval. But the real impact of indexing often becomes clear only when you compare scenarios with and without it.
Do you Know what Happens Without an Index?
Imagine a table with three columns: Name, Age, and MobileNumber.
.png)
Now, consider this query:
.png)
If the Age column does not have an index, the database engine will:
Hi,
I have Cache 2024.1. I attached the process ID from my terminal to the Cache Studio for Debugger. When I click on "Call Stack" tab I only see first 500 shown. Anyone know how to extend so I can see the rest of the information when i click on "Call Stack" tab? Thank you very much.
.png)
Second question: Using Cache Studio Debugger, anyone know how to expand the value of this variable when it display F,...
.png)
InterSystems FAQ rubric
If you try to kill a global that is mapped at the subscript level from the top node, you will get a <SLMSPAN> error and it will not be deleted. This is because the kill command for subscript-level mapped globals cannot be used across mappings.
// Suppose subscript-mapped globals exist in different databases, as shown below:
^TEST(A*~K*) -> database A
^TEST(L*~Z*) -> database B
// Trying to kill from the top level will result in a <SLMSPAN> error.
NAMESPACE>Kill ^TEST
<SLMSPAN> <- This error is output.Hello all,
First time post and newer to Cache/ObjectScript in general, please keep it in mind!
Some background: I need to build part of a production whose goal is to send patients emails based on appointment status as a daemon-based approach. I have to use Microsoft Graph to accomplish this, which you need an access token to use. To get the access token, I have to go through the OAuth2.0 client credentials grant flow, which involves the creation of a signed JWT assertion using the RS256 algorithm.
I was looking at the %OAuth2.JWT class to accomplish this, via its ObjectToJWT() method.
I am getting the following error periodically:
CP: Pausing users because the Write Daemon has not shown
Too run SQL in Terminal use $system.SQL.Shell().
Please refer to the sample below.
SAMPLES>do $System.SQL.Shell()
SQL Command Line Shell
---------------------------------------------------- The command prefix is currently set to: <>.
Enter q to quit, ? for help.
SAMPLES>>select * from Sample.Vendor
1. select * from Sample.
In some cases, it's necessary to manipulate data from one namespace to another. For example, a routine in the "N1" namespace needs data from the "N2" namespace. In legacy systems (using only globals), it's common to make the global universal, but what about persistent classes? Is this type of globalization also possible?
In the same context, how could I make a persistent class global for all namespaces? The only way I know is by putting it in %SYS.
Recently, we implemented some Java-based services using JDBC. And some time ago, I refactored some legacy PHP programs that used "csession" for communication between systems to use PDO with ODBC.
This raised a question for me about how license management is done in this scenario.
Is a license used per pool? Or per connection? How is this management done?
A unit of ObjectScript code (a ClassMethod, say) may produce a variety of unexpected side effects by interacting with parts of the system outside of its own scope and not properly cleaning up. As a non-exhaustive list, these include:
Use of these important language features without proper cleanup and defensive coding can lead to an application that normally works correctly, but that may fail in unexpected and difficult-to-debug ways.
When using standard SQL or the object layer in InterSystems IRIS, metadata consistency is usually maintained through built-in validation and type enforcement. However, legacy systems that bypass these layers—directly accessing globals—can introduce subtle and serious inconsistencies.
Understanding how drivers behave in these edge cases is crucial for diagnosing legacy data issues and ensuring application reliability.
The DATATYPE_SAMPLE database is designed to help analyze error scenarios where column values do not conform to the data types or constraints defined in the metadata.
Embedded SQL is a tool that allows us to execute SQL statements in Caché Object Script. For example, to select the name of a person with a particular SSN from the Sample.Person class we can do the following:
&SQL( SELECT Name into :tName From Sample.Person Where SSN = :tSSN )
The colon syntax is used to identify local variables, in this case tName and tSSN. Here, tSSN will be defined prior to execution and tName will be set during execution of the statement. &SQL indicates to our compiler that this is SQL syntax.
gj :: configExplorer is a new VS Code extension integrating with Server Manager and leveraging Structurizr to produce configuration diagrams of your servers.
Here's a short introductory video.
By using the InterSystems IRIS Native API for Node.js it avoids the need for any support code to be installed on the servers. This technology choice also qualifies it for entry into the current Developer Community contest.
The initial release focuses on two aspects of server configuration:
Suggestions for what to add next are welcome, as is general feedback.
Studio's Output window is interactive, and code can ask questions there if it is a Studio environment. How do I check for that?
In my previous article, I structured network communications
in these 3 possible layers, and covered the last
In fact, you have the most control over the last one.
The IRIS side as a server is yours and under your full control.
Up to now, the Transport layer was assumed to be as passive as a bare wire.
This assumption should be verified. I once met a Windows environment with
a quite surprising setup where a Firewall-like filter was isolating internal
processes and causing a lot of trouble.
Chasing errors or misbehavior in the network can be quite a challenge.
Differently to a local application on the DB server, you always have at least 3 players:
This results in a minimum of 3 possible communication layers
The last one is probably the easiest to check, while the other
two deal with the same counterpart just from opposite sides.
APM normally focuses on the activity of the application but gathering information about system usage gives you important background information that helps understand and manage the performance of your application so I am including the IRIS History Monitor in this series.
In this article I will briefly describe how you start the IRIS or Caché History Monitor to build a record of the system level activity to go with the application activity and performance information you gather. I will also give examples of SQL to access the information.
Trying to check date in DTL.
Want to throw a custom error not the default one from the $ZDTH. It does in the try as will write "Error" when testing the DTL but the actual error not showing. Report errors is turned on. I also tried the THROW logic from best practices but that doesn't work either. $SYSTEM.Status.DisplayError(status) does display what the error should be returned.
try
{
set tDateH = $ZDATEH(tDateofDeath, 8)
}
catch ex
{
w "error"
set status = $$$ERROR($$$GeneralError,"Custom error message")
do $SYSTEM.Status.DisplayError(status)
do $SystemStatus..png)
Hi Community,
In this article, we will explore the concepts of Dynamic SQL and Embedded SQL within the context of InterSystems IRIS, provide practical examples, andexamine their differences to help you understand how to leverage them in your applications.
InterSystems SQL provides a full set of standard relational features, including the ability to define table schema, execute queries, and define and execute stored procedures. You can execute InterSystems SQL interactively from the Management Portal or programmatically using a SQL shell interface. Embedded SQL enables you to embed SQL statements in your ObjectScript code, while Dynamic SQL enables you to execute dynamic SQL statements from ObjectScript at runtime. While static SQL queries offer predictable performance, dynamic and embedded SQL offer flexibility and integration, respectively.
As a developer who uses Cache as DB for a couple of projects, I'm using REST API's every time, knowing how to consume a resource from REST API, in my opinion, it's crucial to know how to consume external REST Api's using %Net.HttpRequest because it enables integration with modern web applications and services, and it's a crucial skill for a backend developer who loves and uses Cache as a DB.
What and who is %Net.
The Interoperability user interface now includes modernized user experiences for the DTL Editor and Production Configuration applications that are available for opt-in in all interoperability products. You can switch between the modernized and standard views. All other Interoperability screens remain in the Standard user interface. Please note that changes are limited to these two applications and we identify below the functionality that is currently available.
To try out the new screens prior to upgrading, you can download the 2025.