Lỗi the connectionstring property has not been initialized năm 2024
User performs actions inside Controller. From time to time (occasionally / intermittently) the user receives an error message. The exact error message will vary (depending on what the end user is doing), but it will include the phrase "The ConnectionString property has not been initialized". SymptomCauseThere are several known potential causes for this 'The ConnectionString property has not been initialized' error.
This Technote relates to the scenario where the customer is using a modern version of Controller (for example 10.3.1/10.4.0/10.4.1/10.4.2) therefore is not suffering from the known bugs in older versions of Controller (which can cause the problem). In this scenario, the cause is a limitation of the third-party (Microsoft) IIS component, used by the Controller architecture. This limitation is triggered by the default settings for the IIS application pool recycle: EnvironmentController 10.3.1/10.4.0/10.4.1/10.4.2 or later. Diagnosing The ProblemOn the Controller application server, open Microsoft Event Viewer. Inside the 'System Log', there may be a 'WAS' or 'Microsoft-Windows-WAS' event at a similar time to when the users reported the issue. It will look similar to this:
Resolving The ProblemLong-term Fix Modify the relevant IIS application pool's recycle settings, so that it does not recycle when users are using the system.
Method 1 (recommended)Configure the application pool (mentioned inside the Event Viewer 'System' log) to NEVER recycle.
Steps: The following changes can be made at any time (no need for downtime). 1. Logon to the Controller application server 2. From the Start menu, open 'Administrative Tools' and launch "Internet Information Services (IIS) Manager" 3. Navigate to the 'Application Pools' section 4. Make a note of any application pool which has 'Applications' set to be more than zero
5. Right-click on the first relevant entry (for example '.NET v4.5') and click "View Applications" 6. Look to see if it mentions 'controllerserver' and 'ControllerProxyServer'
If your application pool has an entry similar to the one above, then this is the relevant application pool that we change \=> Skip to step 8. 7. Repeat step 6 until you find the application pool which contains an entry for 'controllerserver' and 'ControllerProxyServer' 8. Open 'Application Pools' again 9. Right-click on the pool that we found earlier (for example '.NET v4.5') and choose 'Recycling...': 10. Untick *all* the boxes so that it looks similar to: 11. Click "Next", "Finish". 12. Create a Windows 'Scheduled Task' (on that same application server) to run the following command: IISRESET
\================================ Steps to create a Windows 'Scheduled Task' to run IISRESET: The following steps are based on Windows 2012. They may need to be modified slightly depending on your environment: 1. Decide on a regular time for (bried) downtime
NOTE: The amount of downtime will be very small. Typically an IISRESET will only take a few seconds to complete. 2. Logon to the Controller application server 3. Right-click on 'Start' and click "Command Prompt (Admin)" 4. Type in a command similar to:
Make sure there is a success, similar to: 5. Click "Start - Administrative Tools - Task Scheduler" 6. Make sure that the relevant task appears as expected, for example: 7. At a a later date (for example the following Monday) check that the task ran successfully.
Method 2 (alternative method - not recommended because other issues can still occur)Modify the relevant IIS application pool to recycle during a 'quiet' period (the fewest possible users on the system). - However, be aware that there are rare (but known) issues which can occur with these settings - See separate IBM Technote# 2017087 for more details of one example of the type of issue that can still occur if you use this method. Steps: The following changes can be made at any time (no need for downtime). 1. Logon to the Controller application server 2. From the Start menu, open 'Administrative Tools' and launch "Internet Information Services (IIS) Manager" 3. Navigate to the 'Application Pools' section 4. Make a note of any application pool which has 'Applications' set to be more than zero
5. Right-click on the first relevant entry (for example '.NET v4.5') and click "View Applications" 6. Look to see if it mentions 'controllerserver' and 'ControllerProxyServer'
If your application pool has an entry similar to the one above, then this is the relevant application pool that we change \=> Skip to step 8. 7. Repeat step 6 until you find the application pool which contains an entry for 'controllerserver' and 'ControllerProxyServer' 8. Open 'Application Pools' again 9. Right-click on the pool that we found earlier (for example '.NET v4.5') and choose 'Recycling...': 10. Modify the settings so that it looks similar to: In other words:
11. Click 'Next' 12. Make sure that all the available options are ticked, for example: 13. Click "Finish". ------------- Workaround (instant cure) Reset the web server, by running: IISRESET. Steps: 1. Logon to the Controller application server 2. Launch a command prompt:
3. Type the following command: IISRESET ------------- [{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SS9S6B","label":"IBM Cognos Controller"},"ARM Category":[{"code":"a8m50000000KzLjAAK","label":"Logon Issues"}],"ARM Case Number":"","Platform":[{"code":"PF033","label":"Windows"}],"Version":"10.3.1;10.4.x","Line of Business":{"code":"LOB10","label":"Data and AI"}}] |