Product:

Microsoft SQL server 2019

Issue:

How find what SQL Query is it that i is working one?

Solution:

When you have a long list of Query’s you work with, click on the little PIN one each and they will stay at the top. And maybe it is easier for you to find back to the one you want to work with.

 

Other tip is to use WHERE 1=1 in your statements, to easy then remark the lines you need or not need when you adjust your selection.

SELECT TOP (1000) [GeographyKey]
,[City]
,[StateProvinceCode]
,[StateProvinceName]
,[CountryRegionCode]
,[EnglishCountryRegionName]
,[SpanishCountryRegionName]
,[FrenchCountryRegionName]
,[PostalCode]
,[SalesTerritoryKey]
,[IpAddressLocator]
FROM [AdventureRestore].[dbo].[DimGeography]
WHERE 1=1
and CountryRegionCode = 'AU'
--and city = 'Alexandria'
and PostalCode = 2015

 

More Information:

https://www.red-gate.com/simple-talk/wp-content/uploads/imported/1307-keystrokes.pdf

https://learn.microsoft.com/en-us/sql/ssms/sql-server-management-studio-keyboard-shortcuts?view=sql-server-ver16

https://www.mssqltips.com/sqlservertip/2542/display-line-numbers-in-a-sql-server-management-studio-query-window/

https://sqlstudies.com/2022/07/21/ssms-put-pinned-tabs-in-their-own-row/

Product:
Cognos Controller 10.4.2200.88
Microsoft Excel 64 bit Microsoft® Excel® for Microsoft 365 MSO (Version 2302 Build 16.0.16130.20684) 64-bit
Microsoft Windows 11

Issue:

After upgrade to Excel 64 bit, Excel crash at start. The add in for Cognos controller can be for the 32 bit version of the Excel program.

Solution:

Inside Excel, go to file – options.

Go to Add-ins dialog.

Manage‘ is set to ‘Excel Add-ins‘, and click ‘Go’.

Remove the mark for the first Cognos Controller line (adxloader.controller.excellink). Should look like this when it is correct.

Click OK.

Manage‘ is set to ‘COM Add-ins‘, and click ‘Go’.

The Cognos controller link should point to the 64 bit version of the dll, as above.

Click OK.

Recommendation, is to start Cognos Controller program first, and from inside Cognos Controller click on the icon for excel, to start Excel.

Be patient, Excel take a long time to start.

If you check Excel add-ins when Cognos controller is running it can look like this:

 

More Information:

https://www.ibm.com/support/pages/controller-excel-link-disappears-after-excel-crashes

https://exploringtm1.com/use-architect-or-perspectives-10-2-x-to-planning-analytics/ 

https://www.ibm.com/support/pages/office-365-supported-ibm-cognos-controller

https://www.ibm.com/support/pages/ibm-cognos-controller-has-fired-exception-when-updating-layout-caused-microsoft-excel-2016-defect

https://www.add-in-express.com/creating-addins-blog/release-excel-com-objects/

Product:
Microsoft Windows

Issue:

How rename many files in a folder by change the first letter to a other letter?

Solution:

Go to the command prompt.

Go to the folder where the files are.

Enter below to change all files to start with the letter b

ren  *.* b*.*

 

More Information:

https://www.alphr.com/how-to-batch-rename-files-in-windows-10/

https://www.partitionwizard.com/partitionmagic/batch-rename-files.html

 

Product:
Planning Analytics 2.0.9.18
Microsoft Windows 2019 server

Issue:
In a TI process check that the parameter is not empty?

Solution:

If the parameter is pFirst then enter code like this in prolog:

IF ( ~( pFirst @= '' ) ) ;

    ProcessQuit ;
ENDIF;

ProcessQuit will stop the process totally,  itemreject will go to the next tab and process that – if run from prolog. In MetaData and Data tab the itemreject will act different.

# sErrorMessage = ‘The ‘ | pFirst | ‘ is not empty’;
# ItemReject ( sErrorMessage );

More Information:

 https://www.tm1forum.com/viewtopic.php?t=8074

https://exploringtm1.com/operators-tm1-ti-if-statements/ 

https://exploringtm1.com/operators-tm1-rule-statements/

https://www.wimgielis.com/tm1_ifstructures_EN.htm 

https://exploringtm1.com/itemreject-tm1-function-syntax-use/

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=pctf-itemreject 

Product:

Planning Analytics Workspace version 88

Issue:

How add or change text to the front page?

Solution:

Login to PAW and go to administration.

Click on customization.

Click on themes.

Select system default and click download at the right.

sample-theme.zip should you save in a empty folder.

Unzip sample-theme.zip to a folder sample-theme.

Rename folder sample-theme to DEV-theme.

Go into folder, and open file spec.json in notepad++

Edit the text, to something like this

“name”: “DEV-theme”,
“brandText”:”DEVELOPMENT”,

Change the path in “brandIcon”: “DEV-theme/images/brand.svg”, to be the same as your folder name.

Change any color values – like “appbarBackground”:”#66a3ff”,

Save the file.

In file manager, use 7zip, to zip the folder to a new file:  DEV-theme.zip

Go back to PAW Admin page in your browser.

Click on ADD, and upload you new theme.

Select the new theme, and click Active on the right.

The SVG files can be edit with inkscape https://inkscape.org/ 

More Information:

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=company-create-custom-theme 

https://quebit.com/askquebit/designing-highly-customized-dashboards-in-ibm-planning-analytics/ 

 explanation
JSON key name
Definition
name The name for the theme. This name is displayed on the Themes tab of the Excel and Customizations page in Planning Analytics Workspace Administration. You cannot use the name System default, which is reserved for the system default theme.
brandText The branding text to display on the Planning Analytics Workspace home page.
brandIcon The branding image to display on the Planning Analytics Workspace home page. This image is displayed immediately prior and near the brandText.
favicon Not currently supported.
uiShellTheme Determines the appearance of items in the Home menu Home menu. Specify either light (carbon 10) or dark(carbon 100) background.
appbarBackground Application bar background color. This color is applied to the entire application bar, both clickable and non-clickable regions.
appbarForeground Application bar foreground color. This color is applied to text and icons on the application bar.This setting is not applied to the Switcher widget on the application bar. The Switcher displays a list of open items. The text of the Switcher always appears White.
appbarSelectLine Application bar selection line color. This color is applied to the border that surrounds a selected or clicked item on the application bar.
appbarPushButtonBackground Application bar push-button background color. This color is displayed when you hover or click an item on the application bar.
navbarBackground Navigation bar background color. This color is applied to the entire navigation bar, both clickable and non-clickable regions.
navbarForeground Navigation bar foreground color. This color is applied to text and icons on the navigation bar.
navbarSelectLine Navigation bar selection line color. This color is applied to the bar that appears on a selected navigation bar item.
navbarPushButtonBackground Navigation bar push-button background color. This background color is displayed when you click on an item on the application bar.
personalMenuBackground Specifies the background color of the Personal menu icon User icon.Specify inherit to inherit the navbarBackground and navbarPushButtonBackground colors.

See Application of theme keys in Planning Analytics Workspace for a graphical depiction of the application of theme keys in the user interface.

https://convertingcolors.com/hex-color-66A3FF.html 

Product:
Planning Analytics 2.0.9.13 TM1_version=TM1-AW64-ML-RTM-11.0.913.10-0

Microsoft Windows 2019 server

Problem:
How do i give a message to Tm1Web users that they will always see?

Solution:

Edit the CommonMessages.js file and the home.jsp files in Notepad++.

The first is the name of the tab in the web browser – here you can add text, like 1984 in our example by edit the file home.jsp in folder C:\Program Files\ibm\cognos\tm1web\webapps\tm1web. Change the row 47 to the text you want:

<title>IBM Cognos TM1 Web 1984</title>

Save the file and refresh your web browser to see the change.

The second value is in a different folder for each language. The language setting in your web browser will tell what text you will show.

Go to folder C:\Program Files\ibm\cognos\tm1web\webapps\tm1web\scripts\tm1web\common\nls\sv for Swedish language.

Edit the 378 or 379 row in file CommonMessages.js to your message text:

OFFERING_NAME:"Cognos® TM1® Web (please use chrome)",

Save the file and refresh the web browser. If you do not see the text, go into the settings and change the language for the web browser.

For English language, you may need to edit in the Tm1WebAppCam.js file, direct in folder C:\Program Files\ibm\cognos\tm1web\webapps\tm1web\scripts\tm1web\standalone. Search for the word cognos to find where you can edit the file.

 

Third, you may want that the users of TM1WEB should not see the cubes views at all. This is done by a change in the tm1web_config.xml file in folder

C:\Program Files\ibm\cognos\tm1web\webapps\tm1web\WEB-INF\configuration.  Edit the line 25 to this:

<add key="NavTreeDisplayServerView" value="N" />

Save the file and restart the service “IBM Planning Analytics Spreadsheet Services”.

To change the background picture in TM1WEB you may need to edit the file C:\Program Files\ibm\cognos\tm1web\webapps\tm1web\scripts\tm1web\themes\carbon\standalone\images\login\PA_Header.svg.

These changes is not supported by IBM.

More information:

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=ctwsas-displaying-hiding-views-node-in-navigation-pane

https://www.w3schools.com/html/html_css.asp

https://www.toptal.com/designers/htmlarrows/

https://www.iso.org/obp/ui/#search

https://www.w3schools.com/charsets/ref_html_entities_4.asp

https://www.iso.org/obp/ui/#iso:pub:PUB500001:en

https://developer.mozilla.org/en-US/docs/Learn/CSS/First_steps/How_CSS_is_structured

https://cubewisecode.squarespace.com/blog?offset=1528787669586

https://www.tm1forum.com/viewtopic.php?t=426

Product:
Planning Analytics 2.0.9.18
Microsoft Windows 2019 server

Issue:
How get the month before today?

Solution:

In TM1 TI code you can write something similar to this in prolog:

## sMonth = 1 ;
## remove sMonth = below and test with above line

sMonth = ( MONTH ( TODAY ) ) ;
sYear = ( YEAR (TODAY) ) ;
IF ( sMonth = 1) ;
pMonth = numbertostring ( 12 ) ;
pYear = sYear - 1;
ELSE ;
pMonth = numbertostring (sMonth - 1 ) ;
pYear = sYear ;
ENDIF ;

IF (LONG (pMonth) = 1) ;
p2Month = '0' | pMonth ;
ELSE ;
p2Month = pMonth ;
ENDIF ;

pVersion = (p2Month) | ' - ' | numbertostring(pYear) ;

ASCIIOUTPUT ( 'd:\temp\debugtestdate.txt', numbertostring (sMonth) , numbertostring(sYear) , (p2Month) , numbertostring(pYear) ) ;

Will give a test file with this result:

 

If you want to have the year in 4 digits, you can add it like this;

IF ( sMonth = 1) ;
pMonth = numbertostring ( 12 ) ;
pYear = '20' | numbertostring ( sYear - 1 ) ;
ELSE ;
pMonth = numbertostring (sMonth - 1 ) ;
pYear = '20' | numbertostring ( sYear ) ;
ENDIF ;

 

 

More Information:

https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=dtrf-month

Dates and Time in TM1

Product:
Microsoft SQL Azure database

Issue:
How create a new database from a BACPAC file in SQL Azure?

The Azure portal only supports creating a single database in Azure SQL Database and only from a .bacpac file stored in Azure Blob storage.

Depending how your firewall and network endpoints are setup in the SQL azure, you can get different problems.

https://learn.microsoft.com/en-us/azure/azure-sql/database/database-import?view=azuresql&tabs=azure-powershell 

Error: The ImportExport operation failed because of invalid storage credentials, can be that you need to click in “use private link” for the subscription.

You need to select the backup bacpac file from your blob storage.
You should select the database model you want to get a big and valuable SQL Azure database created.
Enter a name that you can easy find from the other databases.

The ImportExport operation with Request Id 'xxxxx-xxxxx' failed due to 'The server principal "donald" is not able to access the database "sqldatabasename-new" under the current security context.
Cannot open database "sqldatabasename-new" requested by the login. The login failed.

Error like above, can be that you do not have access to the database, the user account is not ADMIN on the SQL Azure server.

Other common issue can be that the BLOB storage is not allowing access from the SQL Azure database.
When doing the import above, you need to monitor both Private Endpoint Connections and SQL azure private access, to Approve the request for access that the above import process will ask for.

You can also may need to add the SQL server as resource type.  But it may still fail, if you have not given access to the SQL server over the network from the BLOB storage.

Solution:

If you know you have access from your computer to the SQL azure server, then you should upload the DACPAC from you c:\temp folder with a powershell script.

.\SqlPackage.exe /Action:Import /SourceFile:"C:\temp\sqldatabasfilesavedname.bacpac" /TargetConnectionString:"Server=tcp:sqlservername.database.windows.net,1433;Initial Catalog=databasename_test_restore;Authentication=Active Directory Password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User ID=donald.duck@company.com;Password=xxxxxxx" /p:DatabaseEdition=Standard /p:DatabaseServiceObjective=S4

First you need to install the DacFramework.msi from https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage-download?view=sql-server-ver16

Then start powershell as administrator and go to the folder C:\Program Files\Microsoft SQL Server\160\DAC\bin, and run above powershell script after you change the names to match yours.

Parameters used in script:

.\SqlPackage.exe /Action:Import
= start the process and what action we do – in this case import
/SourceFile:”C:\temp\sqldatabasfilesavedname.bacpac”
= tell the location and filename of the file to restore from
/TargetConnectionString:”Server=tcp:sqlservername.database.windows.net,1433;
= tell protocol and name of SQL server and port the script should use
Initial Catalog=databasename_test_restore;
= tell the new name of the database in SQL azure
Authentication=Active Directory Password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
= set parameters that you will login with active directory
User ID=donald.duck@company.com;
= enter the name of a administrator – this account should not be specified in the database
Password=xxxxxxx”
= enter the password for the account
/p:DatabaseEdition=Standard
= set the version of SQL Azure database you want in the subscription
/p:DatabaseServiceObjective=S4
= set the number of DTU you will use first in your new database

When it does the import – it start with this – check the line for servername to ensure it is correct

Importing to database ‘databasename_test_restore’ on server ‘tcp:sqlservername.database.windows.net,1433’.
Creating deployment plan
Initializing deployment
Verifying deployment plan
Analyzing deployment plan
Importing package schema and data into database
Updating database
Importing data
Processing Import.
Disabling indexes.

….

When done it should say something like this:

Successfully imported database.
Changes to connection setting default values were incorporated in a recent release. More information is available at https://aka.ms/dacfx-connection
Time elapsed 0:13:32.42

 

If you get below error, it can be that you are on VPN, and need to be at the office instead, to be allowed to connect to the Azure SQL Server.

The ImportExport operation with Request Id ‘xxxxx-xxxx’ failed due to ‘An error occurred while communicating with the SQL Server using AdPassword-login: AADSTS50076: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access ‘xxxxx-xxxxxx’

If you get below error, the account you gave, already exist in the DACPAC file, you need to remove the user from the database, and do a new extract of data to dacpac.

Error SQL72014: Framework Microsoft SqlClient Data Provider: Msg 15063, Level 16, State 1, Line 1 The login already has an account under a different user name.
Error SQL72045: Script execution error.  The executed script:
CREATE USER xxxxxxx

You may need to remove logins for the user account used at the import, on the database that you see exist at the server level (on the master database).

To see server accounts, run below on master database:

SELECT A.name as userName, B.name as login, B.Type_desc, default_database_name, B.* 
FROM sys.sysusers A 
    FULL OUTER JOIN sys.sql_logins B 
       ON A.sid = B.sid 
WHERE islogin = 1 and A.sid is not null

More Information:

https://learn.microsoft.com/sv-se/azure/azure-sql/database/database-import?view=azuresql&tabs=azure-powershell 

SqlPackage /a:import /tcs:”Data Source=<serverName>.database.windows.net;Initial Catalog=<migratedDatabase>;User Id=<userId>;Password=<password>” /sf:AdventureWorks2008R2.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:”apptest.onmicrosoft.com”

https://support.ptc.com/help/windchill/r13.0.0.0/en/index.html#page/Windchill_Help_Center/WCUpgradeGuide/WCUpgrade_ImportingAzureSQL.html 

https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage-import?view=sql-server-ver16 

 

Product:

Microsoft Azure SQL database

Issue:

How create a BACPAC, a file that contain both data and table structure (metadata) from the database? That you can import to other database later.

If you are going to import the BACPAC into SQL Azure later, the user account doing the import, can not exist inside the database. Please remove that user from inside the database.

Solution:

From inside SSMS (SQL Server Management Studio) you right click on the database and select task – export data-tier application.

You can enter a filename and save the file to your computer. (downloading database from Azure can take some time)

It is faster to save the file to AZURE BLOB storage (if they are at the same location), then you select “save to Microsoft Azure”.
Select a Storage Account, from your subscription.
Enter a name for the file, or keep the default.
Leave the temporary file as is.
Click next…

Or to save the file to disk, keep the “save to local disk” settings.

Click next and finish to start download the file to your local disk.

A DAC is a logical database management entity that defines all of the SQL Server objects which associates with a user’s database. A BACPAC includes the database schema as well as the data stored in the database.

More Information:

https://learn.microsoft.com/en-us/azure/azure-sql/database/database-export?view=azuresql 

https://www.sqlshack.com/azure-automation-export-azure-sql-database-to-blob-storage-in-a-bacpac-file/ 

SQLPackage utility to export Azure SQL Databases

Product:

Microsoft SQL Azure database

Issue:

Can not delete a user in the database from SSMS.

The database principal owns a schema in the database, and cannot be dropped. (Microsoft SQL Server, Error: 15138)

Solution:

Go to inside SSMS, check what schema is with this command (replace donald with the login you want to check):

select * from information_schema.schemata
where schema_owner = 'donald'

Change the schema stage to use DBO instead with command:

 ALTER AUTHORIZATION ON SCHEMA::[Stage] TO [dbo]

 

After the schema is changed to have a different owner, then the user can be dropped in SSMS.

More Information:

https://www.mssqltips.com/sqlservertip/2620/steps-to-drop-an-orphan-sql-server-user-when-it-owns-a-schema-or-role/

To list all user in database enter:

 SELECT DB_NAME(DB_ID()) as DatabaseName, * FROM sys.sysusers