go to post Lucas Fernandes · May 3 Maybe it can help, In the SYS.Database Class you can find the IsSystemDB(Directory) method that returns whether it is a system database.It works on Caché and IRIS. Documentation IsSystemDB - IRIS Documentation IsSystemDB - Caché Examples: %SYS>set databaseDir = ##class(Config.Databases).Open("IRISLIB").Directory %SYS>write ##class(SYS.Database).IsSystemDB(databaseDir) 1 %SYS>set databaseDir = ##class(Config.Databases).Open("CACHELIB").Directory %SYS>write ##class(SYS.Database).IsSystemDB(databaseDir) 1
go to post Lucas Fernandes · Sep 15, 2023 Hi Shen Jun, If you installed Caché on Windows before installing the Windows SNMP service. You need to register the DLL in Caché. Open the Terminal and type: %SYS> set status=$$Register^SNMP() Then restart the Windows SNMP service and start the Caché SNMP service. Documentation: SNMP Troubleshooting Have you already done this step?
go to post Lucas Fernandes · Aug 17, 2023 You can create User Events using the Security.Events class, with the Create method. Example: %SYS>w ##class(Security.Events).Create("Source","Type","Name","Description", 1)
go to post Lucas Fernandes · Jun 23, 2023 I suggest reading the article: InterSystems Data Platforms and Performance Part 4 - Looking at Memory
go to post Lucas Fernandes · May 29, 2023 This process is related to the Caché System Monitor. Monitors various resources, including the Journal. "Caché System Monitor is a flexible, user-extensible utility used to monitor a Caché instance and generate notifications when the values of one or more of a wide range of metrics indicate a potential problem." You can Stop them or customize the Sampling Interval for your environment. See more in the documentation Caché System Monitor and Caché Monitor
go to post Lucas Fernandes · Mar 29, 2023 You can try to change using Config.SQL class. Example: %SYS>w $SYSTEM.SQL.CurrentSettings() ODBC VARCHAR Max Length: 4096 (Default) %SYS>do ##class(Config.SQL).Get(.p) %SYS>zw p("ODBCVarcharMaxlen") p("ODBCVarcharMaxlen")=4096 %SYS>set p("ODBCVarcharMaxlen") = 5120 %SYS>do ##class(Config.SQL).Modify(.p) %SYS>w $SYSTEM.SQL.CurrentSettings() ODBC VARCHAR Max Length: 5120
go to post Lucas Fernandes · Mar 22, 2023 The same example but in a different form: try { set result=##class(%ResultSet).%New("%DynamicQuery:SQL") $$$ThrowOnError(result.Prepare("SELECT ... ")) } catch error { do error.Log() } The error details will be in the Application Error Log
go to post Lucas Fernandes · Jan 23, 2023 In Caché, as an alternative to Portal, you can use Terminal and run: SAMPLES>do $SYSTEM.SQL.Shell() SQL Command Line Shell---------------------------------------------------- Or the %SQL.Statement Or try an external tool like dbeaver (https://dbeaver.io/)
go to post Lucas Fernandes · Jan 23, 2023 Another suggestion, If you use an exclusive Resource in your database (example %DB_<database-name>), you can use it as a reference. It is included in the .DAT and you can check it even with the database not created, just the physical file. Example: w ##class(SYS.Database).%OpenId("/usr/irissys/mgr/test1/").ResourceName The SYS.Database class also gets other information, but nothing relevant for identification. -- Or (perhaps not recommended) you can extract the original path directly from the .DAT, for example: $ strings /usr/irissys/mgr/test2/IRIS.DAT | head -3Cache DB/usr/irissys/mgr/test1/%DB_TEST1
go to post Lucas Fernandes · Jul 15, 2022 You can review the 'UnknownUser' user's permissions. In the documentation it says that 'Embedded SQL' does not check permissions: InterSystems SQL enforces privilege checking for ODBC, JDBC, Dynamic SQL, and the SQL Shell interface on InterSystems IRIS data platform. Embedded SQL statements do not perform privilege checking; Or use an authenticated user with the proper permissions; About privileges and users: Users, Roles, and Privileges About authentication: Authentication and Authorization
go to post Lucas Fernandes · Jun 8, 2022 Based on the ODBC source program maybe you can get it with Delegated Authentication. Depending on the origin, the user would receive additional Roles or not with (Using Privileged Routine Applications). To create additional or specific Roles for each user or user group see RBAC documentation.
go to post Lucas Fernandes · Apr 13, 2022 I didn't know about this change in IRIS. Thanks for clarifying.
go to post Lucas Fernandes · Apr 11, 2022 You can also try rebuilding the Index Table or clearing Cached Queries. Portal uses cached query and in its code it uses Embedded SQL (&sql) - Doc.: There is no need for a cache for Embedded SQL, because Embedded SQL statements are replaced with inline code at compilation time.
go to post Lucas Fernandes · Feb 25, 2022 I'm using Zabbix to monitor all IRIS status and it works great. Zabbix has alert features (Triggers) that communicate with me via email or communication channels (like slack) when an incident occurs. I collect status information, errors, performance, etc. I use SNMP protocol indicators and other indicators through ODBC, some created by me and others obtained through monitor collections.
go to post Lucas Fernandes · Aug 12, 2021 You can try this using EmergencyId mode. Stop IRIS and start with the parameter: Linux iris start IRIS EmergencyId=user,password Windows iris start IRIS /EmergencyId=user,password User and password can be anything. This will be used for login. Once logged in as this user by the terminal, you can use the ^SECURITY routine in the %SYS namespace to change the password of _SYSTEM. Documentation (Temporary): EmergencyId Mode ^SECURITY
go to post Lucas Fernandes · Aug 12, 2021 As @Danny Wijnschenk said, on Windows it needs to be /EmergencyId=. There are a few more instructions in the Documentation, like "Start a command prompt, running it as an administrator", etc.
go to post Lucas Fernandes · Jul 27, 2021 In Caché I use this: set path = ##class(Config.Databases).Open("USER").Directory set database = ##class(SYS.Database).%OpenId($get(path)) do database.DisableJournaling() set status = database.%Save() do database.EnableJournaling() set status = database.%Save()
go to post Lucas Fernandes · Jul 7, 2021 I also don't know the %SQL_Manager.CachedQueryTree() and I didn't find it in the Doc. I don't know if there's a difference.
go to post Lucas Fernandes · Jul 7, 2021 At Caché I usually use it: SELECT Routine, Query FROM %Library.SQLCatalog_SQLCachedQueryInfo() Is there a difference?