Thursday, August 19, 2010

Web service request GetDataSources to Report Server failed. Error: Unable to connect to the remote server

Hello Everybody...

Here I am sharing my experience during the investigations of a very serious but easy to fix issue :-) which our team faced with CRM Reports. Hope you find it useful...

Recently our CRM team faced a serious issues when suddenly all the CRM Reports got break down and were unable to load.

The errors which got logged in the event viewer of the CRM Server were something like below:

"Web service request GetDataSources to Report Server http://report server name/reportserver failed. Error: Unable to connect to the remote server"


AND


"Web service request GetDataSources to Report Server http://report server name/reportserver failed with SoapException. Error: The path of the item '/CRM Database Name/4.0/' is not valid. The full path must be less than 260 characters long; other restrictions apply. If the report server is in native mode, the path must start with slash. (rsInvalidItemPath)"


After some hours of investigations in every nook and corner of CRM for finding the root cause of this issue. One of my team member caught the source of the issue. Issue was due to the settings on the Reporting Server which somehow got changed. Catch the below screen shot for details.

Solution:
Make sure that the settings on the report server are as per the below screenshot. The URL to access your Reporting server will be like http://Report Server Name/Reports. After you go to this URL, get yourself reach to the below page and check your settings.



Wasn't it really an easy fix...? J

Wednesday, August 18, 2010

Not have enough privilege to complete Create operation for an Sdk entity Platform

Hello,

Seldom you may encounter the following error during an attempt to register a workflow activity or plug-in into MSCRM 4.0.

"Not have enough privilege to complete Create operation for an Sdk entity Platform"


You may think that the user whose credentials are used to register the workflow or plug-in have the rights of "System Customizer" and if more over also have the rights of "System Administrator" then why this type of error is thrown.

The mystery behind this error is like,  for any operations on Sdk entity platform, the user should have the rights higher than that of "System Administrator" which is the rights of "Deployment Administrator".


Solution :
You can give the user the rights of "Deployment Administrator" from the Deployment Manager program on the CRM Application Server under Start -> Programs -> Microsoft Dynamics CRM -> Deployment Manager.


In Deployment Manager, Click on "Deployment Administrators" folder on the left pane. Thereafter click on "New Deployment Administrator" link on the right pane of the window and add the user in it.


Also note that only the user having the rights of "Deployment Administrator" can open Deployment Manager and can add any other user to the list of Deployment Administrator in Deployment Manager.


Hope you find this helpful... J

Tuesday, July 6, 2010

Exception: Too many parameters were provided in this RPC request. The maximum is 2100.

Hello Folks, 


Recently I had encountered a very interesting issue when i was working with CRM Web Service and trying to fetch the data requested by user using the Advanced Find window.

The Exception which i was faced was something weird like this :

Exception: System.Data.SqlClient.SqlException: The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Too many parameters were provided in this RPC request. The maximum is 2100.

After bugging into the issue for some hours together, I found very interesting fact regarding the SQL Server. So I wanted to share this with you all.

In SQL Server, You can only have up to 2100 parameters inside IN statement in WHERE Clause.
You will get the above exception if the query similar to below is fired in SQL Server.

SELECT * FROM tablename WHERE columnname IN (1,2,3,4,5, ........ , 2101 )

Solution:
You can create new table with the values in IN statement and then JOIN your table with it. Find below example.

--Create new table
Create Table temp (myvalues uniqueidentifier)

Add all the value in IN statement of above query to the temp table above and then use this table with join to your above query as below.

-- Join new table with your table
SELECT t1.*
FROM tablename t1
JOIN temp t2 ON t1.myvalues = t2.myvalues

Hope you find this post useful. J