Tech

Min blogg är både en privat blogg och en plats där jag sparar intressanta teknikartiklar. På förstasidan hamnar alla artiklar men om man bara är intresserad av min tekniska information så kan man välja rubriken/kategorin Tech. För att prenumerera på Tech, använd denna feed.

Problems accessing the /reports website in Dynamics 365 VMs

Hi

Today I had an issue trying to access the classic reports folder for SSRS in a Dynamics 365 for Finance and Operations VM hosted in Azure. When connecting to the site we used http://[VMname]/reports and all we get is a login prompt.

This one was quite easy… Just fire up the Reporting Services Configuration Manager, goto Web Portal URL and click Apply to configure it

And that is it!

Happy weekend

/Johan

Copy database from a OneBox environment to an Azure Sql Environment

Most of this post is a copy of the Microsoft Article (which is referenced below) but with my remarks, clarifications adn some changes for making the process easier.

1. Create a Backup copy of the Source database

BACKUP DATABASE [AxDB] TO DISK = N'D:\Backups\axdb_original.bak' WITH NOFORMAT, NOINIT, NAME = N'AxDB_golden-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10
GO
RESTORE DATABASE [AxDB_CopyForExport] FROM DISK = N'D:\Backups\axdb_original.bak' WITH FILE = 1, MOVE N'AXDBBuild_Data' TO N'F:\MSSQL_DATA\AxDB_CopyForExport.mdf', MOVE N'AXDBBuild_Log' TO N'G:\MSSQL_LOGS\AxDB_CopyForExport_Log.ldf', NOUNLOAD, STATS = 5

Note: You need to change the paths for the database files

2. Prepare YOUR COPY of the database for moving to Azure SQL

update sysglobalconfiguration set value = 'SQLAZURE' where name = 'BACKENDDB' 
update sysglobalconfiguration set value = 1 where name = 'TEMPTABLEINAXDB'
drop procedure XU_DisableEnableNonClusteredIndexes
drop schema [NT AUTHORITY\NETWORK SERVICE]
drop user [NT AUTHORITY\NETWORK SERVICE]
drop user axdbadmin
drop user axdeployuser
drop user axmrruntimeuser
drop user axretaildatasyncuser
drop user axretailruntimeuser
drop user axdeployextuser

3. Export the prepared database to a BacPac file

cd C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin\
md D:\Exportedbacpac
SqlPackage.exe /a:export /ssn:localhost /sdn:AxDB_CopyForExport /tf:D:\Exportedbacpac\my.bacpac /p:CommandTimeout=1200 /p:VerifyFullTextDocumentTypesSupported=false

Note: This operation will take quite a while

4. Copy the bacpac file to the destination server
Note: If you have a large file you can use an Azure Storage Blog

5. Import the bacpac as a new database

cd C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin\
SqlPackage.exe /a:import /sf:C:\Temp\my.bacpac /tsn:azuresqlserver.database.windows.net /tu:sqladmin /tp:<passwordforsqladmin> /tdn:AxDB_New /p:CommandTimeout=1200 /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P2

Note: This operation will take quite a while

6. Update the database with users, passwords and some other settings using the script below:

CREATE USER axdeployuser FROM LOGIN axdeployuser
EXEC sp_addrolemember 'db_owner', 'axdeployuser'

CREATE USER axdeployextuser WITH PASSWORD = '<password from LCS>'
IF EXISTS (select * from sys.database_principals where type = 'R' and name = 'DeployExtensibilityRole')
BEGIN
EXEC sp_addrolemember 'DeployExtensibilityRole', 'axdeployextuser'
END

CREATE USER axdbadmin WITH PASSWORD = '<password from LCS>'
EXEC sp_addrolemember 'db_owner', 'axdbadmin'

CREATE USER axruntimeuser WITH PASSWORD = '<password from LCS>'
EXEC sp_addrolemember 'db_datareader', 'axruntimeuser'
EXEC sp_addrolemember 'db_datawriter', 'axruntimeuser'

CREATE USER axmrruntimeuser WITH PASSWORD = '<password from LCS>'
EXEC sp_addrolemember 'ReportingIntegrationUser', 'axmrruntimeuser'
EXEC sp_addrolemember 'db_datareader', 'axmrruntimeuser'
EXEC sp_addrolemember 'db_datawriter', 'axmrruntimeuser'

CREATE USER axretailruntimeuser WITH PASSWORD = '<password from LCS>'
EXEC sp_addrolemember 'UsersRole', 'axretailruntimeuser'
EXEC sp_addrolemember 'ReportUsersRole', 'axretailruntimeuser'

CREATE USER axretaildatasyncuser WITH PASSWORD = '<password from LCS>'
EXEC sp_addrolemember 'DataSyncUsersRole', 'axretaildatasyncuser'

ALTER DATABASE SCOPED CONFIGURATION  SET MAXDOP=2
ALTER DATABASE SCOPED CONFIGURATION  SET LEGACY_CARDINALITY_ESTIMATION=ON
ALTER DATABASE SCOPED CONFIGURATION  SET PARAMETER_SNIFFING= ON
ALTER DATABASE SCOPED CONFIGURATION  SET QUERY_OPTIMIZER_HOTFIXES=OFF
ALTER DATABASE <imported database name> SET COMPATIBILITY_LEVEL = 130;
ALTER DATABASE <imported database name> SET QUERY_STORE = ON;

update [dbo].[SYSSERVICECONFIGURATIONSETTING]
set value =''
where name = 'TENANTID'

update dbo.POWERBICONFIG
set TENANTID = ''

update dbo.PROVISIONINGMESSAGETABLE
set TENANTID = ''

Note: Use these SQL queries to get the TENANTID:
select * from [dbo].[SYSSERVICECONFIGURATIONSETTING]
where name = 'TENANTID'
select TENANTID from dbo.POWERBICONFIG
select TENANTID from dbo.PROVISIONINGMESSAGETABLE

7. Stop services locking the original database

  • World wide web publishing service (on all AOS computers)
  • Microsoft Dynamics 365 for Finance and Operations Batch Management Service (on non-private AOS computers only)
  • Management Reporter 2012 Process Service (on business intelligence [BI] computers only)

Note: this needs to be done on all servers for the environment

8. Run this script to switch the databases

ALTER DATABASE [axdb_123456789] MODIFY NAME = [axdb_123456789_original]
ALTER DATABASE [importeddb] MODIFY NAME = [axdb_123456789]

9. Start services locking the original database

  • World wide web publishing service (on all AOS computers)
  • Microsoft Dynamics 365 for Finance and Operations Batch Management Service (on non-private AOS computers only)
  • Management Reporter 2012 Process Service (on business intelligence [BI] computers only)

10. Syncronize the database

F:
cd F:\AosService\WebRoot\bin
Microsoft.Dynamics.AX.Deployment.Setup.exe -bindir "F:\AosService\PackagesLocalDirectory" -metadatadir F:\AosService\PackagesLocalDirectory -sqluser axdbadmin -sqlserver <azure sql database server name>.database.windows.net -sqldatabase <database name> -setupmode sync -syncmode fullall -isazuresql true -sqlpwd <sql password> >log.txt 2>&1

11. If the environment is running Retail you will need to run the Retail Reprovisioning tool, see instructions in this document

12. Reset the financial Database using these instructions

Note: I have noticed that some integrations are having problems accessing some DLLs after a refresh. This is usually solved by a restart of the environment. To do this easier we usually do it from LCS

Links:
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/database/copy-database-from-sql-server-to-azure-sql
Resetting the financial reporting data mart after restoring a database.

Moving SQL tempdb to another drive

Today I urgently needed to move tempdb from one drive to another to free up space. So I googled to find a script and found this one by Brent Ozar. It has been added to StackExchange and refined a bit.

DECLARE @newDriveAndFolder VARCHAR(8000);

SET @newDriveAndFolder = 'Z:\YourTempDBfolder';

SELECT [name] AS [Logical Name]
    ,physical_name AS [Current Location]
    ,state_desc AS [Status]
    ,size/1024 AS [Size(MB)]
    ,'ALTER DATABASE tempdb MODIFY FILE (NAME = ' + QUOTENAME(f.[name])
    + CHAR(9) /* Tab */
    + ',FILENAME = ''' + @newDriveAndFolder + CHAR(92) /* Backslash */ + f.[name]
    + CASE WHEN f.[type] = 1 /* Log */ THEN '.ldf' ELSE '.mdf' END  + ''''
    + ');'
    AS [Create new TempDB files]
FROM sys.master_files f
WHERE f.database_id = DB_ID(N'tempdb')
ORDER BY f.[type];

Change the newDriveAndFolder variable and run the script and it will generate the T-SQL statements you need to move them.

ALTER DATABASE tempdb MODIFY FILE (NAME = [temp2] ,FILENAME = ‘F:\MSSQLDATA\temp2.mdf’);
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp3] ,FILENAME = ‘F:\MSSQLDATA\temp3.mdf’);
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp4] ,FILENAME = ‘F:\MSSQLDATA\temp4.mdf’);
ALTER DATABASE tempdb MODIFY FILE (NAME = [temp5] ,FILENAME = ‘F:\MSSQLDATA\temp5.mdf’);

Worked like a charm

/Johan

Copy database from a OneBox environment to another OneBox Environment

This document is a check-list I have compiled on moving a database from one OneBox environment to another. Microsoft does not have a document for this scenario so I have compiled information from multiple blog posts.

1. Create a Backup copy of the Source database

2. Move the Database to the destination environment and restore it there

3. Stop the AX Services

  • World wide web publishing service (on all AOS computers)
  • Microsoft Dynamics 365 for Finance and Operations Batch Management Service
    (on non-private AOS computers only)
  • Management Reporter 2012 Process Service (on business intelligence [BI]
    computers only)

4. Rename the OLD database to AxDB_ORIG_TodaysDate and rename the newly restored database to AxDB.

5. Start the services that was stopped in Step 3 above

6. Sync the Database using either Visual Studio or this command from an elevated command prompt:

K:<br />
cd K:\AosService\WebRoot\bi<br />
Microsoft.Dynamics.AX.Deployment.Setup.exe -bindir "K:\AosService\PackagesLocalDirectory" -metadatadir K:\AosService\PackagesLocalDirectory -sqluser axdbadmin –sqlserver localhost -sqldatabase AxDB -setupmode sync -syncmode fullall -isazuresql false -sqlpwd <sql password> >log.txt 2>&1

Note: K is the Service Volume

Verify that there are no errors in log.txt

7. I the environment is running Retail you will need to run the Retail Reprovisioning tool in this document.

8. Reset the Financial Reporting Database according to this document.

Links
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/analytics/reset-financial-reporting-datamart-after-restore
http://blog.johanpersson.nu/?p=2684

Enabling Batch Alerts in Dynamics 365 for Finance and Operations

Today we will look at Alerts in Dynamics. First you need to set up SMTP in Dynamics.

  1. Go to System Administration – Setup – Email – Email Parameters
  2. Configure settings for your email service, in our case Office 365

    SNAGHTMLeed53c

  3. Click Save

Now it is time to prepare your user account

  1. In Dynamics 365 for Operation click Settings (the little gear in the top right corner) – User options – Account –  Email Provider Selection
  2. Set Email provider SMTP and set an email adress.

    SNAGHTML1038418

To enable alerts for a batch job:

  1. Go to System Administration – Inquiries –  Batch Jobs
  2. Click BATCH JOB – Alerts
  3. Check the Alerts you want to send and check Email and verify your email adress

    SNAGHTML108bc56

Installing a deployable package in Dynamics 365 for Operations using command-line

Today we will be installing a deployable package using command line… this article is mostly for creating a condensed version for my own use… for a complete version please look at the link at the bottom of the page

1. From the Dynamics Server (using RDP) log into https://lcs.dynamics.com and select the correct project.
2. Goto Asset Library and download the package to D:\
3. Goto Properties for the file and unblock it
4. Unzip the file

NOTE: The folder where the files are unziped/stored must not contain spaces

5. Edit the DefaultTopologyData.xml file to look like this (for a onebox environment):

<?xml version=”1.0″ encoding=”utf-8″?>
<TopologyData xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>
   <Name>AX topology</Name>
   <MachineList>
     <Machine>
       <Name>localhost</Name>
       <ServiceModelList>
           <string>AOSService</string>
           <string>ALMService</string>
           <string>BIService</string>
           <string>DevToolsService</string>
           <string>DIXFService</string>
           <string>DocumentRoutingAgent</string>
           <string>MROneBox</string>
           <string>PayrollTaxModule</string>
           <string>PerfSDK</string>
           <string>ReportingService</string>
           <string>RetailCloudPos</string>
           <string>RetailHQConfiguration</string>
           <string>RetailSDK</string>
           <string>RetailSelfService</string>
           <string>RetailServer</string>
           <string>RetailStorefront</string>
           <string>SCMSelfService</string>
        <!– DefaultTopologyData are only for dev vhd, which we only support AOS update–>
        <!– Create a new topology data for your Cloud AX topology–>
       </ServiceModelList>
     </Machine>
   </MachineList>
   <BackupScript>
     <FileName />
     <Automated>false</Automated>
     <Description>Please backup your environment now, set this step to complete once you finished backup</Description>
   </BackupScript>
</TopologyData>

6. Run these commands to install the file:

AXUpdateInstaller.exe generate -runbookid=name-runbook -topologyfile=DefaultTopologyData.xml -servicemodelfile=DevInstallServiceModelData.xml -runbookfile=name-runbook.xml
AXUpdateInstaller.exe import -runbookfile="name-runbook.xml"
AXUpdateInstaller.exe execute -runbookid="name-runbook"

Links:
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/deployment/install-deployable-package

Configuring access for mobile warehousing app in Dynamics 365 for Operations

Today I am setting up the mobile warehouse app in Dynamics 365 for Operations… there is a very nice Wiki article here with the walkthrough but I am doing a slightly condensed version.

Edit 180108: Step has been edited to work in the new portal

  1. Go to the azure portal. In Azure Active Directory – App Registrations create a web application for the warehouse portal

    Name: WhatEverYouWant
    Application Type: Web app/API
    Sign-on URL: https://[theURLforyourdynamicsinstance]/oauth

  2. Open the application to edit it
  3. Verify Application ID. If you create the Application in the new new portal it will auto generate an AppID which is random. If you use the old portal to create the application you will have to add the App ID URI. Make sure that this URI is NOT your Dynamics 365 for operations URL because this will break for instance Excel Add-in and Management Reporter. For more information look here
  4. Go to Required Permissions and click Add
  5. Select the API called Microsoft Dynamics ERP (Microsoft.ERP)
  6. Under Permissions to other applications click add application and add Microsoft Dynamics ERP
  7. Add the following permissions

    Access Dynamics AX online as organization users
    Access Dynamics AX data
    Access Dynamics AX Custom Service

  8. Go to API Access – Keys, enter the name for your new key and set a duration. When you click save you will get the key. Please remember to copy and save it some where because it will not be visible later.
  9. Now you need to save the ClientID (Old Portal)/Application ID (New Portal) for later.
  10. Log into Dynamics 365 for Operations and go to System Administration – Users and create a new user (in my case called WMAPP. The email address can be anything since it will never be used. The user needs these roles

    Warehouse mobile device user

  11. Now we need to associate the user to the AD Application which is done on System Administration – Setup – Azure Active Directory applications. Here we paste the App ID/ClientID from before and select the user we created. Click Save and you are done.
  12. Install the App from app store and enter these settings:

    SNAGHTML12dda1b

    1. Azure Active Directory ID: AppID/CleintID from step 9
    2. Azure Active Directory Client Secret: The key from step 8
    3. Azure Active Directory Resource: Your Dynamics 365 URL
    4. Azure Active Directory Tennant: https://login.windows.net/yourADtennant
    5. Company: Dynamics 365 for Operations Legal Entity

Links:
https://ax.help.dynamics.com/en/wiki/install-and-configure-dynamics-365-for-operations-warehousing/

Using the Retail Reprovisioning tool for Dynamics 365 for Operations

When you do any kind of copying between environments in Dynamics there are some settings which are copied that are actually wrong for the destination environment. To fix these you need to run a tool called Retail Reprovisioning tool (also called Environment retargeting tool)

At the beginning this was only supposed to be run for environments actively using the Retail Components. The recommendation at the moment (2017-11-29) is to run it for every environment since al of the actually contains Retail components.

1. To make sure that you have the latest version of the tool go to LCS – Asset Library. Go to Software Deployable Packages – Import  and Select the latest Environment Reprovisioning tool.

2. The next step is different depending on which type of environment you are using.

If you are using a 2-tier environment; go to the environment, select Maintain and  Apply Updates. Select the Environment Reprovisioning tool and click Apply. Continue to Step 5

If you are using a Dev environment you are not able to deploy using LCS and you will have to deploy from command line according steps 3 – 4

3. Unblock the downloaded file by Right-clicking the file and going to Properties – General Unblock for the fil

4. Extract the file to a temporary directory

Install using these command lines:

AXUpdateInstaller.exe list

Fix the DefaultTopologyData.xml and make it look like this:

<?xml version="1.0" encoding="utf-8"?>
<TopologyData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <Name>AX topology</Name>
   <MachineList>
     <Machine>
       <Name>localhost</Name>
       <ServiceModelList>
         <string>RetailServer</string>
         <string>ALMService</string>
         <string>AOSService</string>
         <string>BIService</string>
         <string>DevToolsService</string>
         <string>DIXFService</string>
         <string>DocumentRoutingAgent</string>
         <string>MROneBox</string>
         <string>PayrollTaxModule</string>
         <string>PerfSDK</string>
         <string>ReportingService</string>
         <string>RetailCloudPos</string>
         <string>RetailHQConfiguration</string>
         <string>RetailSDK</string>
         <string>RetailSelfService</string>
         <string>RetailStorefront</string>
         <string>SCMSelfService</string>
         <!-- DefaultTopologyData are only for dev vhd, which we only support AOS update-->
         <!-- Create a new topology data for your Cloud AX topology-->
       </ServiceModelList>
     </Machine>
   </MachineList>
   <BackupScript>
     <FileName />
     <Automated>false</Automated>
     <Description>Please backup your environment now, set this step to complete once you finished backup</Description>
   </BackupScript>
</TopologyData>

Generate The Runbook
AXUpdateInstaller.exe generate -runbookid=[runbookID] -topologyfile=[topologyFile] -servicemodelfile=[serviceModelFile] -runbookfile=[runbookFile]
AXUpdateInstaller.exe import -runbookfile=[runbookFile]

Verify the runbook

AXUpdateInstaller.exe list

Execute the runbook

AXUpdateInstaller.exe execute -runbookid=[runbookID]

Post Steps:

5. After the retargeting tool is run you need to run these four steps

a. Open the “Retail Parameters” form, and press the “Initialize” link under the “General” tab. Answer “Yes” to the prompt. This will provide any new Retail seed data.

clip_image001

b. Open the “Initialize Retail Scheduler” form, and run it with “delete existing configuration” set to “Yes“.

c. Restart the “Microsoft Dynamics AX Batch Service” on all AOS VMs. This will update any cached connection credentials that may be used when running a CDX data sync. (done by DSE if PROD => you need to raise a ticket)

d. Navigate to the “Channel Database” form and run a CDX 9999 sync (full sync). This should succeed if everything is properly configured for Retail.

6. Sometimes there is issues with some columns in some tables in the channel database looses their setting for full text indexing (this seems to be an effect of the BacPac procedure when sopying to and from an Azure Environment), this results in not being able to search in for instance MPOS. To verify this you can use this script:

SELECT 
SCHEMA_NAME(t.schema_id) as TableSchema,
       t.name AS TableName, 
       c.name AS CatalogName ,
       i.name AS UniqueIdxName,
       cl.name AS ColumnName,
COLUMNPROPERTY(t.object_id, cl.name, 'IsFulltextIndexed') as IsFullTextEnabledOnTable,
          fi.is_enabled AS isEnabledOnColumn
FROM 
sys.tables t 
INNER JOIN
sys.fulltext_indexes fi 
ON 
    t.[object_id] = fi.[object_id] 
INNER JOIN 
sys.fulltext_index_columns ic
ON 
    ic.[object_id] = t.[object_id]
INNER JOIN sys.columns cl ON 
        ic.column_id = cl.column_id
AND ic.[object_id] = cl.[object_id]
INNER JOIN 
sys.fulltext_catalogs c 
ON 
    fi.fulltext_catalog_id = c.fulltext_catalog_id
INNER JOIN 
sys.indexes i
ON 
        fi.unique_index_id = i.index_id
AND fi.[object_id] = i.[object_id]
where c.name like 'COMMERCEFULLTEXTCATALOG' 
order by Tablename ASC

look for the ones having a ‘0’ in any column and fix them by runing:

ALTER FULLTEXT INDEX ON [ax].tablename ENABLE
ALTER FULLTEXT INDEX ON [ax].tablename SET CHANGE_TRACKING=MANUAL;
GO<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>
ALTER FULLTEXT INDEX ON [ax].tablename START FULL POPULATION;
GO
ALTER FULLTEXT INDEX ON [ax].tablename SET CHANGE_TRACKING=AUTO;
GO<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>

Links:
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/deployment/install-deployable-package

Retail servicing data is not present in the RetailServer web.config when running Retail Retargeting tool

Thi is an issyue we have noticed on especially new environments that we have refreshed with a database from an existing Retail Enable environment. After refreshing the database we need to run the retargeting tool to make sure that all settings are corrected.

When the tool is run it fails at step 3 and when we look in the Step3RetargetRetailServer-logfile we find this:

12/6/2017 9:35:52 AM:     – Trying to get information of the website – AOSService …
Unexpected error. Microsoft.Dynamics.ApplicationPlatform.Environment.Settings.ConfigurationKeyNotFoundException: No setting keys found for prefix ‘CertificateHandler’.
    at Microsoft.Dynamics.ApplicationPlatform.Environment.Settings.BaseConfigSetting.GetSettingsForPrefix(String prefix)
    at ConfigEncryptor.Program.Main(String[] args).
12/6/2017 9:35:52 AM:
PSMessageDetails      :
Exception             : System.Management.Automation.RuntimeException: Retail servicing data is not present in the
                         RetailServer web.config, please contact DSE team.
TargetObject          : Retail servicing data is not present in the RetailServer web.config, please contact DSE team.
CategoryInfo          : OperationStopped: (Retail servicin…ntact DSE team.:String) [], RuntimeException
FullyQualifiedErrorId : Retail servicing data is not present in the RetailServer web.config, please contact DSE team.
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, F:\DeployablePackages\a2f41617-591e-45c9-bce4-1934c1b17ca6\RetailServer\scrip
                         ts\RetargetRetailServer.ps1: line 299
                         at <ScriptBlock>, <No file>: line 3
                         at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {}
12/6/2017 9:35:52 AM: Executed:
F:\DeployablePackages\a2f41617-591e-45c9-bce4-1934c1b17ca6\RetailServer\scripts\RetargetRetailServer.ps1
Exiting with error code .

This error is due to missing information in the Web.Config file for Retail. Fortunately there is a fairly easy fix… there is a script in the Retail Retargeting tool called Update-RetailServicingInformation.ps1 which populates the web.config file with the correct information. The parameters you will need to provide is the database name which you can find in SQL Server Management Studio and the SQL Server name. The server name for OneBox Environments is Localhost. For Tie-2 and up you will need to provide the Azure SQL name which you can find in LCS, don´t forget to add database.windows.net to make it a FQDN

/Johan

Azure SQL SqlPackage error

Today I tried to do a restore of database to an Azure DB in a Dynamics 365 for Operations environment. When I ran SQLPackage.exe I got the following error:

‘Unable to connect to master or target server ‘AxDB_New’. You must have a user with the same password in master or target server ‘AxDB_New’

The issue here is that the version of SQL Management Studio that is provided in the Azure VM is version 16 and Azure SQL requires version 17… with that background I am not convinced that the error message is totally relevant…

The solution is to upgrade Management Studio to the latest Version.

image

/Johan