title: Is it possible to set TRANSACTION ISOLATION LEVEL SNAPSHOT automatically?
body: <p>because i've recognized locks on tables that are queried simultaneously, i've decided to enable <a href="http://msdn.microsoft.com/en-us/library/ms130975%28v=SQL.90%29.aspx" rel="nofollow noreferrer">ISOLATION LEVEL SNAPSHOT</a> that was new to me. </p>
  
  <pre><code>ALTER DATABASE RM2 SET SINGLE_USER WITH ROLLBACK IMMEDIATE ;
  ALTER DATABASE RM2 SET ALLOW_SNAPSHOT_ISOLATION ON;
  ALTER DATABASE RM2 SET READ_COMMITTED_SNAPSHOT ON;
  ALTER DATABASE RM2 SET MULTI_USER;
  </code></pre>
  
  <p>But now i'm wondering if it is possible to apply this Isolation level on all existing queries automatically because this DB contains lots of Views,Stored Procedures, Table Values Functions and is queried by many different applications(e.g. SSRS,SSAS,ASP.NET with ADO.NET,ADO Connections from Excel). </p>
  
  <p>If i've understood correctly i have to modify the queries to use IsolationLevel.Snapshot, for example:</p>
  
  <pre><code>SET TRANSACTION ISOLATION LEVEL SNAPSHOT
  GO
  BEGIN TRAN SparePartReport
  SELECT TOP 100 PERCENT * FROM DBO.Last3MonthSparepartReport
  COMMIT TRAN SparePartReport
  </code></pre>
  
  <p><strong>Q:</strong> Is it possible in some way to minimize the effort because i cannot change all applications and queries. Another problem seems to be that i cannot apply the IsoalationLevel on Views directly. </p>
  
  <p>Note: Most of the tables in the database that are relevant are read-only all the day, because the data is imported overnight by a Windows-Service and Stored-Procedures.</p>
  
  <p>Thanks in advance</p>
  
  <hr>
  
  <p>Although @Maximilian's answer seems to be the correct, i'm still having deadlock/timout situations in the ASP.NET application when running large reports simultaneously.
  <a href="https://stackoverflow.com/questions/7764952/can-foreign-ceys-cause-deadlocks-and-hinder-read-comitted-snapshot">Here is the followup question</a>.</p>