Showing posts with label SQL Server Performance. Show all posts
Showing posts with label SQL Server Performance. Show all posts

Friday, January 13, 2017

Reporting Server failed to start - The request failed or the service did not respond in a timely fashion.

Modify the registry to increase the default time-out value for the service control manager. To increase this value to 60 seconds, follow these steps:
       1. Click Start, click Run, type regedit,and then click OK.
       2. Locate and then click the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control.
       3.  In the right pane, locate the ServicesPipeTimeout entry.
            Note If the ServicesPipeTimeout entry does not exist, you must créate it. To do this, follow these steps:
    1. On the Edit menu, point to New, and then click DWORD Value.
    2. Type ServicesPipeTimeout, and then press ENTER.
    3. Right-click ServicesPipeTimeout, and then click Modify.
    4. Click Decimal, type 60000, and then click OK.
      This value represents the time in milliseconds befor
            Restart the computer for the changes to take effect.
 Check that SSRS and SSIS services can be started now.

Thursday, August 4, 2016

SQL Server performance for Dynamics CRM

Data Management Views, stores transnational information which can be used to monitor performance of SQL Server. Below are some queries which gives you data related to indexes used in your CRM database tables and which are the most expensive queries according to that you can troubleshoot the problem related to performance.


  • Index Usage

Select OBJECT_NAME(a.object_id),b.name,a.user_seeks,a.user_scans,a.* from sys.dm_db_index_usage_stats a join VirginMedia_MSCRM.sys.indexes b on a.object_id = b.object_id and a.index_id = b.index_id
Where a.database_id = DB_ID('YourOrganizationName_MSCRM')order by b.name

  •       Most Expensive Queries
SELECT top 100 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.TEXT) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1),
qs.execution_count,
qs.total_logical_reads, qs.last_logical_reads,
qs.total_logical_writes, qs.last_logical_writes,
qs.total_worker_time,
qs.last_worker_time,
qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY
qs.total_logical_reads DESC -- logical reads



  •              Missing Indexes
SELECT
      migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) AS improvement_measure,
      'CREATE INDEX [myIndex_' + CONVERT (varchar, mig.index_group_handle) + '_' + CONVERT (varchar, mid.index_handle)
      + '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']'
      + ' ON ' + mid.statement
      + ' (' + ISNULL (mid.equality_columns,'')
      + CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END
      + ISNULL (mid.inequality_columns, '')
      + ')'
      + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,
      migs.*, mid.database_id, mid.[object_id]
FROM sys.dm_db_missing_index_groups mig
INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
WHERE migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) > 10

ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC