or
ERROR [AGENTNAME-lowPriorityPool-1-[DBSS_PI_Engine_Maintenance][]] com.quest.qsi.fason.sqlserver.common.spi.BaseSpiController - Failed to initialize SQL PI engineA DBXX-SPIRepository agent was deleted and then recreated when (rather than using the restore agents script) the PI extension was added back with different connection values. After this change, agents where the PI extension was newly added will use the newer connection details to the PI repository host while the agents added earlier will use the original values.
It is important for users to re-enter in the correct repository connection details (if prompted) when adding the PI extension to addition agents on the same FglAM. The values (e.g. username, repository host) are case sensitive and must be exactly the same for all of the agents using the same FglAM.
NOTE: When the FglAM restarts it uses the hostname from the first agent that starts up causing the other agents with the different value to display this message. Some of the PI agents may work because they have the correct connection values while others on the same FglAM will not work.
This may occur for example when the DBXX-SPIRepository agents were deleted during the HA process
The following groovy script when run through Script Console will list the database agents and the PI repository that each is associated with. This can be adjusted for other cartridges and can be used for the investigation.
def out = new StringBuilder(); def agentService = server.get("AgentService"); def configService = server.get("ConfigService"); def agents = agentService.findByAdapterAndType("FglAM", "DB_SQL_Server"); out.append(String.format("FglAM ID, Agent Name, Repository Host, Repository Database, Port, Username, Auth Type, Enabled, Monitoring Key, Paused\n")); for (agent in agents) { def primaryASP = configService.getAgentInstancePrimaryAsp(agent.getAgentNamespace(), agent.getTypeId(), agent.getId()); if (primaryASP) { out.append(String.format("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n", agent.getRemoteClientId(), agent.getName(), primaryASP.getString("parcStorageHost"), primaryASP.getString("parcStorageDatabase"), primaryASP.getString("parcStoragePort"), primaryASP.getString("parcStorageUsername"), primaryASP.getString("parcStorageAuthType"), primaryASP.getString("paecEnable"), primaryASP.getString("paecMonitoredKey"), primaryASP.getString("paecPaused"))); } } return out.toString();
This script can be used for Oracle instance agents
def out = new StringBuilder(); def agentService = server.get("AgentService"); def configService = server.get("ConfigService"); def agents = agentService.findByAdapterAndType("FglAM", "DB_Oracle"); out.append(String.format("FglAM ID, Agent Name, Repository Host, Repository Database, Port, Username, Auth Type, Monitored Key, Enabled, Monitoring Key, Paused\n")); for (agent in agents) { def primaryASP = configService.getAgentInstancePrimaryAsp(agent.getAgentNamespace(), agent.getTypeId(), agent.getId()); if (primaryASP) { out.append(String.format("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n", agent.getRemoteClientId(), agent.getName(), primaryASP.getString("spircStorageHost"), primaryASP.getString("spircStorageDatabase"), primaryASP.getString("spircStoragePort"), primaryASP.getString("spircStorageUsername"), primaryASP.getString("spircStorageAuthType"), primaryASP.getString("spiecEnable"), primaryASP.getString("spiecMonitoredKey"), primaryASP.getString("spiecPaused"))); } } return out.toString();
This script can be used for Oracle RAC agents
def out = new StringBuilder(); def agentService = server.get("AgentService"); def configService = server.get("ConfigService"); def agents = agentService.findByAdapterAndType("FglAM", "DB_Oracle_RAC_Instance"); out.append(String.format("FglAM ID, Agent Name, Repository Host, Repository Database, Port, Username, Auth Type, Monitored Key, Enabled, Monitoring Key, Paused\n")); for (agent in agents) { def primaryASP = configService.getAgentInstancePrimaryAsp(agent.getAgentNamespace(), agent.getTypeId(), agent.getId()); if (primaryASP) { out.append(String.format("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n", agent.getRemoteClientId(), agent.getName(), primaryASP.getString("spircStorageHost"), primaryASP.getString("spircStorageDatabase"), primaryASP.getString("spircStoragePort"), primaryASP.getString("spircStorageUsername"), primaryASP.getString("spircStorageAuthType"), primaryASP.getString("spiecEnable"), primaryASP.getString("spiecMonitoredKey"), primaryASP.getString("spiecPaused"))); } } return out.toString();
This script can be used for MySQL PI agents
def out = new StringBuilder(); def agentService = server.get("AgentService"); def configService = server.get("ConfigService"); def agents = agentService.findByAdapterAndType("FglAM", "DB_MySQL_PI"); out.append(String.format("FglAM ID, Agent Name, Repository Host, Repository Database, Port, Username, Auth Type, Enabled, Monitoring Key, Paused\n")); for (agent in agents) { def primaryASP = configService.getAgentInstancePrimaryAsp(agent.getAgentNamespace(), agent.getTypeId(), agent.getId()); if (primaryASP) { out.append(String.format("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n", agent.getRemoteClientId(), agent.getName(), primaryASP.getString("parcStorageHost"), primaryASP.getString("parcStorageDatabase"), primaryASP.getString("parcStoragePort"), primaryASP.getString("parcStorageUsername"), primaryASP.getString("parcStorageAuthType"), primaryASP.getString("paecEnable"), primaryASP.getString("paecMonitoredKey"), primaryASP.getString("paecPaused"))); } } return out.toString();
This script can be used for SSAS agents
def out = new StringBuilder(); def agentService = server.get("AgentService"); def configService = server.get("ConfigService"); def agents = agentService.findByAdapterAndType("FglAM", "SSAS_Agent"); out.append(String.format("FglAM ID, Agent Name, Repository Host, Repository Database, Port, Username, Auth Type, Enabled, Monitoring Key, Paused\n")); for (agent in agents) { def primaryASP = configService.getAgentInstancePrimaryAsp(agent.getAgentNamespace(), agent.getTypeId(), agent.getId()); if (primaryASP) { out.append(String.format("%s, %s, %s, %s, %s, %s, %s, %s, %s\n", agent.getRemoteClientId(), agent.getName(), primaryASP.getString("ssasSpiCommonStorageHost"), primaryASP.getString("ssasSpiCommonStorageDatabase"), primaryASP.getString("ssasSpiCommonStoragePort"), primaryASP.getString("ssasSpiCommonStorageUsername"), primaryASP.getString("ssasSpiCommonStorageAuthType"), primaryASP.getString("ssasSpiEngMonitoredKey"), primaryASP.getString("ssasSpiEngPaused"))); } } return out.toString();
This script can be used for PostgreSQL PI agents
def out = new StringBuilder(); def agentService = server.get("AgentService"); def configService = server.get("ConfigService"); def agents = agentService.findByAdapterAndType("FglAM", "DB_PostgreSQL_PI"); out.append(String.format("FglAM ID, Agent Name, Repository Host, Repository Database, Port, Username, Auth Type, Enabled, Monitoring Key, Paused\n")); for (agent in agents) { def primaryASP = configService.getAgentInstancePrimaryAsp(agent.getAgentNamespace(), agent.getTypeId(), agent.getId()); if (primaryASP) { out.append(String.format("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n", agent.getRemoteClientId(), agent.getName(), primaryASP.getString("parcStorageHost"), primaryASP.getString("parcStorageDatabase"), primaryASP.getString("parcStoragePort"), primaryASP.getString("parcStorageUsername"), primaryASP.getString("parcStorageAuthType"), primaryASP.getString("paecEnable"), primaryASP.getString("paecMonitoredKey"), primaryASP.getString("paecPaused"))); } } return out.toString();
WORKAROUND
The SPIRepository agents and the database agents have their mappings mixed up because the wrong hostname was entered. To resolve this issue for SQL Server agents (as an example).
1). Disable the PI extension from all SQL Server agents (Select the SQL Server tab in Databases | Select All agents | Enter the PI Admin panel | disable the PI extensions for all SQL Server agents)
2). In Agent Status, delete the SPIRepository agents
3). Enable the PI extension from all SQL Server agents (Select the SQL Server tab in Databases | Select All agents | Enter the PI Admin panel | enable the PI extensions for all agents. When you try to enable PI it will prompt for the database connection information. Enter in the correct PI repository host and then choose the correct database to connect back to. These new values will be associated for all of the agents on each FglAM.
These steps can be used similarly for other database cartridges.
STATUS
This issue has been logged as defect FOG-8662 and has been fixed in the 7.2.3.10 releases of the database cartridges.
© 2025 Quest Software Inc. ALL RIGHTS RESERVED. Termini di utilizzo Privacy Cookie Preference Center