<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlserver.ro/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>T-SQL</title><link>http://sqlserver.ro/forums/15/ShowForum.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Re: Shared Locks and Stored Procedures</title><link>http://sqlserver.ro/forums/thread/5040.aspx</link><pubDate>Tue, 27 May 2008 21:00:59 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:5040</guid><dc:creator>cardasim</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/5040.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=5040</wfw:commentRss><description>&lt;P&gt;Nu cred ca SHARED LOCK are vreo legatura cu ideea de procedura storata in sine. Un query rulat dintr-o procedura sau unul dintr-un SQL dinamic (cel pe carel scrii in cod si-l trimiti la server) se comporta la fel raportat la lock-uri. Procedurile stocate prezinta alte avantaje cum ar faptul ca sunt precompilate si ca planurile de executie au sanse mai mari de a fi reutilizate de catre server.&lt;/P&gt;
&lt;P&gt;Ma gandesc insa ca autorul se refera la urmatoare situatie: faci un SELECT folosind un IDataReader (de ex SqlDataReader), stai in bucla while(dr.Read()) si faci operatiuni de INSERT, UPDATE, DELETE in acceasi tabela, eventual pe aceleasi recorduri. SELECT-ul mentine un SHARED LOCK iar INSERT, UPDATE, DELETE ar vrea si ele sa faca un LOCK exclusiv pe aceleasi recoduri (sau pagini). In acest moment intr-adevar performnata I,U,D are de suferit, iar in unele situatii poate aparea DEADLOCK. Idee e sa eliberezi lock-ul cat mai repede posibil si asta se poate face daca incarci datele intr-o colectie de date (deconectata), dupa care poate urma orice alta procesare.&lt;/P&gt;
&lt;P&gt;Daca afli pana la urma ce-a vrut sa spuna autorul, scoate-ma si pe mine din ceata.&lt;/P&gt;</description></item><item><title>Shared Locks and Stored Procedures</title><link>http://sqlserver.ro/forums/thread/5016.aspx</link><pubDate>Fri, 23 May 2008 05:19:06 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:5016</guid><dc:creator>mariusf</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/5016.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=5016</wfw:commentRss><description>De curand am citit cartea "SQL Server™ 2005 Bible", scrisa de Paul Nielsen. La capitolul "Managing Transactions, Locking and Blocking" am intalnit urmatoarea informatie legata de proceduri stocate si shared locks. : &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Be careful with shared locks. I believe that misused shared locks are a common cause of&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; update-performance problems. Applications should grab the data in a way that doesn’t hold&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; the shared lock. This is one compelling reason to use stored procedures to retrieve data."&lt;br&gt;&lt;br&gt;Cum influenteaza procedurile stocate felul cum se obtine un shared lock? De ce acest lucru nu se intampla si la view-uri?&lt;br&gt;</description></item></channel></rss>