Hi guys,
I am running a test upgrade from NAV2009R2 to NAV2016
I have taken the path to upgrade to NAV2013R2 first then to NAV2016.
An error received when running the Upgrade new version > Transfer Data step in NAV2013R2.
"A call to System.Data.SqlClient.SqlDataAdapter.Fill failed with this message: Invalid object name '<Companyname>$upgrade355_DimSetID"
It was referring to the intermediate table created during the upgrade step.
it basically reached the first dimension upgrade table "Ledger Entry Dimension" and failed during the UpdateDimSetIdInWorkTable() function
to be specific, failed at the line of code:
SQLDataAdapter.Fill(SystemDataTable); //executes query + fills DataTable
Where should I go from here?
Could it be any SQL permission issue? As the client is very strict on what permission we can have. I am running the upgrade under an account with db_owner role of the database we are upgrading.
Thanks for your help.
0
Answers
We have found the issue
During the dimension upgrade steps in NAV2013R2, NAV creates a few intermedia tables on the fly via sql queries.
For example, when it upgrades the Ledger Entry Dimension Table (355) , it will create
- <CompanyName>$upgrade355_Dim
- <CompanyName>$upgrade355_DimSetID
- <CompanyName>$upgrade355_TableID
However the user account I am running with although it has the db_owner role, but the default schema is not dbo, rather CORP\username
So the tables that SQL queries created was something like
- CORP\username.<CompanyName>$upgrade355_Dim
- CORP\username.<CompanyName>$upgrade355_DimSetID
- CORP\username.<<CompanyName>$upgrade355_TableID
Rather than
- dbo.<CompanyName>$upgrade355_Dim
- dbo.<CompanyName>$upgrade355_DimSetID
- dbo.<CompanyName>$upgrade355_TableID
Hence the sql command failed to find the tables. Once I changed the user account’s default schema to be dbo, the upgrade process was able to continue
What a tricky one that is!