Very nice report. Thank you!
- Log in to post comments
Very nice report. Thank you!
For already running backup or restore you can check "7) Monitor progress of backup or restore" menu in do ^BACKUP routine
Generally, if performance matters -- consider using $Listnext instead of $List or $ListGet
This is a standard Windows error with the code 64:
C:\>net helpmsg 64
The specified network name is no longer available.
Some Caché code called some OS system function that returned this error and for some reason it was logged.
To investigate this further -- check what process logged the error message. Find in the Caché Audit a Login event with the corresponding process. Perhaps it might give you some hint
Generally, messages with severity 0 are informational, 1 -- warnings, 2 -- error, 3 -- critical
No. If you have Windows NT authentication enabled to connect to SQL Server then SQL Server ODBC driver uses OS user that executes irisdb.exe process. That's the same use as configured to run service IRIS.
If you'd like to use different user for authentication , then choose SQL Server authentication and specify that user and its password in SQL Gateway connection settings
Yes. See privileged routines https://docs.intersystems.com/iris20223/csp/docbook/DocBook.UI.Page.cls?KEY=TSQS_PRA_CreatePRA
Did you try to run this after failed set x509 = ##class(%SYS.X509Credentials).GetByAlias("foo") ?
Try to output %oblasterror:
zw %objlasterror
Based on "%Admin_Secure:USE" it seems like user who runs the CSP page lack USE privilege on %Admin_Secure resource
The best option -- create XSD from the XML or get XSD from the XML provider, import the XSD in IRIS, that will generate set of classes to import XML to
Other way -- manually create classes for each different xsi:type
Recompile also FIelds class.
Yes, looks correct.
I have the following classes:
Class dc2303.Field Extends (%Persistent, %XML.Adaptor)
{
Parameter XMLTYPE = "UDFLookupFieldInstance";
Parameter XMLFORMAT = "literal";
Parameter XMLNAME = "Field";
Parameter NAMESPACE = "http://www.civica.co.uk/ParisConnect/ConnectXml/1.0/Messaging";
Property Suffix As %String(XMLNAME = "Suffix", XMLPROJECTION = "ATTRIBUTE");
Property Description As %String(XMLNAME = "Description", XMLPROJECTION = "ATTRIBUTE");
Property ID As %String(XMLNAME = "ID", XMLPROJECTION = "ATTRIBUTE");
}
Class dc2303.Fields Extends (%Persistent, %XML.Adaptor)
{
Parameter XMLFORMAT = "literal";
Parameter XMLNAME = "Fields";
Parameter XMLSEQUENCE = 1;
Parameter NAMESPACE = "http://www.civica.co.uk/ParisConnect/ConnectXml/1.0/Messaging";
Parameter SUPPRESSTYPEPREFIX = 1;
Property Fields As list Of Field(XMLNAME = "Field", XMLPROJECTION = "ELEMENT");
/// d ##class(dc2303.Fields).TestFieldsCorrelate()
ClassMethod TestFieldsCorrelate()
{
Set reader = ##class(%XML.Reader).%New()
Set tSc=reader.OpenFile("c:\temp\Fields.xml")
#dim match as Fields
Do reader.Correlate("Fields","dc2303.Fields")
While reader.Next(.match,.tSc) {
w !, "Hurrah"
}
If $$$ISERR(tSc) {
w !, $SYSTEM.Status.GetErrorText(tSc)
}
}
}
And fields.xml is
Should work. I actually tested it. Did you recompile both classes? Do you get the same error still?
Check carefully. Note -- in ^%ISCLOG (with percent) you enable the log. Then you read ^ISCLOG (without percent) in %SYS namespace. When I repeated steps that I suggested to you, I saw the following error in ^ISCLOG
/* ERROR #5002: ObjectScript error: ^%CSP.Login.1 ^|^^c:\intersystems\iris2023x1\mgr\|dc.CustomLogin.1 */
Then I enabled auditing of Protect events, reproduced the eror and got more details:
Description: Attempt to access a protected resource
Timestamp: 2023-03-19 16:01:38.000 Username: CSPSystem
UTCTimestamp: 2023-03-19 15:01:38.000 Pid: 10896
Event Source: %System JobId/JobNum: 131089/17
Event Type: %Security Session ID: eK95W6SMCS
Event: Protect IPAddress: 127.0.0.1
System ID: DEP5570AKOBLOV:IRIS2023X1 Executable: CSPa24.dll
Namespace: %SYS Index: 196
Roles:
User Info: O/S User: CSP Gateway
Routine: ^%CSP.Login.1 |"^^c:\intersystems\iris2023x1\mgr\irislib\"|
Authentication: Password
Event Data:
^%CSP.Login.1 *^|^^c:\intersystems\iris2023x1\mgr\|dc.CustomLogin.1
Indeed, user CSPSystem does not have READ permission on irissys database, where custom login class is located. Rather I should have created a new role that has only READ permission on %DB_IRISSYS resource, not RW.
I added role %DB_IRISSYS to user CSPSystem, closed connections from Apache to IRIS, so that the role is added on new connection, then login page began to work
Documentation has an important note about this parameter:
This parameter has been retained for compatibility, but should not be used when building new applications.
https://docs.intersystems.com/iris20223/csp/docbook/Doc.View.cls?KEY=RACS_NullSubscripts
xsi:type is a special attribute
IRIS analogue is XMLTYPE parameter of the class,
You need to remove Property Type from the Field class and add the following parameter, then recompile both Field and Fields
Parameter XMLTYPE = "UDFLookupFieldInstance";
Yuri, enable ISCLOG, reproduce the error, disable ISCLOG and then check if it has any errors, e.g.
%SYS>kill ^%ISCLOG, ^ISCLOG %SYS>set ^%ISCLOG = 3 //reproduce the error %SYS>set ^%ISCLOG = 0 %SYS>zw ^ISCLOG
Afaik, with custom login pages user CSPSystem needs to have READ permissions on a database where custom login page class is located
In HealthShare section you see Extended Maintenance kits In Continuous Delivery section you'll find Health Connect 2022.3, 2022.2
Michael,
please create a separate question for this comment.
See table at this link https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_fzconvert#RCOS_fzconvert_jsml
You likely need "JS" transformation:
USER>write $zconvert("abc/def","O","JS")
abc\/def
404 is also returned when there are some permissions issues. Try to give %All to the user that you calling this API with and see if it helps. If yes -- then this is permissions issue. Or enable Audit and auditing for Protect event and see if it is logged in Audit when the problem happens
Other idea -- enable ISCLOG, reproduce the problem, disable ISCLOG and see if there are any errors there. ISCLOG is very verbose, so just do one HTTP request with ISCLOG enabled
enable:
%SYS>kill ^ISCLOG,^%ISCLOG
%SYS>set ^%ISCLOG = 3
disable:
%SYS>set ^%ISCLOG = 0
analyze:
%SYS>zw ^ISCLOG (yes, without %)
Hi Virat.
See Learning paths on learning.intersystems.com: https://learning.intersystems.com/course/view.php?id=243
Check that IIS_IUSRS has an access to the parent folders as well
Generally, you should install external web server and use it with the application. Private Web Server (the one that runs on 57772) are for Management Portal and some basic tests only
Why do you want to know this, Gabriel? For some application logic or to estimate size of the global? Or for something else?
ODBC driver is backwards compatible. You can always use latest ODBC driver with previous IRIS versions
It's possible. Please report it to WRC.
Choose Logical Mode in dropdown near the Query Builder. Perhaps IRIS SQL tries to do some Logical -> Display conversion and fails.
Make sure that you select the whole lines, so that first character on each line is selected
You can try to run it with Wine
What error did you get?
Are you sure, that the error is inside %CSP.Broker?
%CSP.Broker is a dispatch class to call server-side methods.
In most cases the error happens in the application method that is called via %CSP.Broker.
Enable logging for CSP Broker and see if any additional information is logged in ^ISCLOG:
USER>zn "%SYS"
%SYS>kill ^ISCLOG, ^%ISCLOG
%SYS>set ^%ISCLOG("Category","CSPBroker")=3
%SYS>set ^%ISCLOG=3
To disable logging:
%SYS>kill ^%ISCLOG
If %CSP.Broker is used to call ZEN Methods then enable also ZEN logs:
%SYS>do ##class(%ZEN.Utils).%StartLog()
%SYS>do ##class(%ZEN.Utils).%ShowLog()
1 13:40:51.606 OnPreHTTP /csp/sys/%CSP.Portal.Home.zen
2 13:40:51.809 InvokeInstanceMethod 138@%ZEN.Auxiliary.jsonProvider:RefreshFromServer
3 13:40:51.830 InvokeClassMethod %CSP.Portal.Home.GetNamespaceList
4 13:40:51.845 InvokeInstanceMethod 169@%ZEN.Component.html:ReallyRefreshContents
%SYS>do ##class(%ZEN.Utils).%StopLog()
See also
SET OPTION PKEY_IS_IDKEY = true
With this enabled your sample works as you expect