SSAS Tabular Model. Column disappears after SSAS sevice restart - ssas

SSAS Version: 14.0.226.1
Visual Studio Version: 4.7.02558
Issue: once model is delployed to the server, it is processed w/o any errors. But if the SSAS server is rebooted, one of the dimensions throws an error while processing. It just loses one of the column. Here is the error that I get (Failed to save modifications to the server. Error returned: 'The 'Global_Code_SKU' column does not exist in the rowset.):
The column data sample looks like this:
The model contains 2 dimensions and a fact table with 632 million rows in it. May it be that the fact table size is an issue? Maybe dictionary's too big?
How I fix it: by deploying model again without partitions and roles, just metadata, and this fixes the issue, however sometimes servers can be rebooted without notification, so the processing job fails next day (it runs once a day).
Is there any suggestion I can consider to fix this? I searched for a while, haven't found any solution though.

There was a hidden sign in right before the first symbol in one of the names, so after comparing binaries of the two strings we wound that we just should recreate the table and that solved the problem

Some suggestions to try:
After reboot, connect to the SSAS server using SSMS and right click the database in question and choose Script -> Script database as. Is the column Global_Code_SKU still there? Is it hidden? Is it available in the source?
What datatype is the Global_Code_SKU? I've had problems with columns with similar values being auto-identified by SSAS as binary and therefore excluded from the load.

Related

Bigquery internal error during copy job to move tables between datasets

I'm currently migrating around 200 tables in Bigquery (BQ) from one dataset (FROM_DATASET) to another one (TO_DATASET). Each one of these tables has a _TABLE_SUFFIX corresponding to a date (I have three years of data for each table). Each suffix contains typically between 5 GB and 80 GB of data.
I'm doing this using a Python script that asks BQ, for each table, for each suffix, to run the following query:
-- example table=T_SOME_TABLE, suffix=20190915
CREATE OR REPLACE TABLE `my-project.TO_DATASET.T_SOME_TABLE_20190915`
COPY `my-project.FROM_DATASET.T_SOME_TABLE_20190915`
Everything works except for three tables (and all their suffixes) where the copy job fails at each _TABLE_SUFFIX with this error:
An internal error occurred and the request could not be completed. This is usually caused by a transient issue. Retrying the job with back-off as described in the BigQuery SLA should solve the problem: https://cloud.google.com/bigquery/sla. If the error continues to occur please contact support at https://cloud.google.com/support. Error: 4893854
Retrying the job after some time actually works but of course is slowing the process. Is there anyone who has an idea on what the problem might be?
Thanks.
It turned out that those three problematic tables were some legacy ones with lots of columns. In particular, the BQ GUI shows this warning for two of them:
"Schema and preview are not displayed because the table has too many
columns and may cause the BigQuery console to become unresponsive"
This was probably the issue.
In the end, I managed to migrate everything by implementing a backoff mechanism to retry failed jobs.

Initialization of the data source failed - Excel 2016

I'm trying to refresh a query in Excel 2016 (new install) and I get the above error. I've looked around, the problem seems quite common, but none of the answers seem to fit my issue.
In Excel, I have a couple of tabs of data in Excel tables. I use Get & Transform to import these tables into Power Query from where I generate 4 further tables of data, which are uploaded to the Data Model. I then create 3 relationships and generate 3 pivot tables with a single slicer to operate the tables.
When I come out of Excel and go back in and select "Refresh All", this is when I get the error:
Initial of the data source failed.
Check the database server or contract your db admin. Make sure the
external db is available and then try the operation again. If you see
this message again, create a new data source to connect to the DB
The data source is the excel workbook. I tried re-creating the Power Query queries etc, but to no avail.
Repair on Power Pivot also didn't work.
Given it's a new install of 2016, which comes with Power Query and Pivot as standard, I'm not sure where to try next.
Any help much appreciated.
I ran a repair on my installed version of Excel 2010, and that seems to solve the issue for me, I've seen sometimes when the user has multiple versions of excel installed library references can get broken, resulting in this error.

Import Column transformation hangs without any indication what is going on

Backstory
I have recently been given the task of maintaining a SSIS process that a former colleague oversaw. I have only a minimal experience with BIDS/SSIS/"What ever MS marketing wants to call it now" and have an issue which I can't seem to find a solution to.
Issue
I have a Data Flow that includes reading images data from a table as well as doing a file read on the images them self's.
For the image read a 'Import Column transformation' (here by called ICt) is being used, and it hangs indefinitely.
The module gets handed 2500 rows of image data (name, path, date created etc) and using the 'path' column the ICt tries to read the file. I've set the correct input column under 'Input and Output Properties' as well as setting the output column. The input column has the output columns ID in its FileDataColumnId.
When running the process it just hangs as yellow and nothing happens. I can access the images in the explorer, and know they exist (at least some).
Tools used
Windows 7
Visual Studio 2008 sp2
SQL-Server 2012
All hints, tips or possible solutions would be appreciated.

How to resume data migration from the point where error happened in ssis?

I am migrating data from an Oracle database to a SQL server 2008 r2 database using SSIS. My problem is that at a certain point the package fails, say some 40,000 rows out of 100,000 rows. What can I do so that the next time when I run the package after correcting the errors or something, I want it to be restarted from the 40,001st row, i.e, the row where the error had occured.
I have tried using checkpoint in SSIS, but the problem is that they work only between different control flow tasks. I want something that can work on the rows that are being transferred.
There's no native magic I'm aware of that is going to "know" that it failed on row 40,000 and when it restarts, it should start streaming row 40,001. You are correct that checkpoints are not the answer and have plenty of their own issues (can't serialize Object types, loops restart, etc).
How you can address the issue is through good design. If your package is created with the expectation that it's going to fail, then you should be able to handle these scenarios.
There are two approaches I'm familiar with. The first approach is to add a Lookup Transformation in the Data Flow between your source and your destination. The goal of this is to identify what records exist in the target system. If no match is found, then only those rows will be sent on to destination. This is a very common pattern and will allow you to also detect changes between source and destination (if that is a need). The downside is that you will always be transferring the full data set out of the source system and then filtering rows in the data flow. If it failed on row 99,999 out of 1,000,000 you will still need to stream all 1,000,000 rows back to SSIS for it to find the 1 that hasn't been sent.
The other approach is to use a dynamic filter in your WHERE clause of your source. If you can make assumptions like the rows are inserted in order, then you can structure your SSIS package to look like Execute SQL Task where you run a query like SELECT COALESCE(MAX(SomeId), 0) +1 AS startingPoint FROM dbo.MyTable against the Destination database and then assign that to an SSIS variable (#[User::StartingId]). You then use an expression on your select statement from the Source to be something like "SELECT * FROM dbo.MyTable T WHERE T.SomeId > " + (DT_WSTR, 10) #[User::StartingId] Now when the data flow begins, it will start where it last loaded data. The challenge on this approach is finding those scenarios where you know data hasn't been inserted out of order.
Let me know if you have questions, need things better explained, pictures, etc. Also, above code is freehanded so there could be syntax errors but the logic should be correct.

Where is MS Reports Log files located and accessed?

I have two MS Reports with each their own dataset.
The first one works but the other does not fill anything in it's table. When I debug the dataset, just before showing the Report, it's fill, and I did the same setup as with the first report.
I get no errors og other input.. The table just not show any rows at all.
Is their any log files that can tell me something and if so, where can I find them? Thanks.
Check 3 things:
See that the dataset binded are the same (that u r filling)
is the report Showing the formatted headers(table and column header) this means that table format is ok.
if you want you can check report .rdlc file (it is xml base file generated for the report)
The report server log file location can be found in the registry:
HKLM
Software
Microsoft
Microsoft SQL Server
{Report Server Instance Name, mine is MSRS10_50.MSSQLSERVER}
CPE
The log file location is the data value associated with the ErrorDumpDir key.
When previewing in report designer any error messages will be displayed in the preview tab. Sounds like you may have a different problem that won't be reported in the logs. Double-check that the query returns data. You may want to use SQL Server Profiler (assuming your database is SQL Server) to debug queries executed against the database.