<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>தகவல் தளம்</title>
        <link>http://blog.krupashankar.com/pullivalai/category/1.aspx</link>
        <description>தகவல் தளம்</description>
        <language>ta</language>
        <copyright>சு. க்ருபா ஷங்கர்</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>தமிழில் பெயர் வைக்க ஒரு செக் கன்ஸ்ட்ரைண்ட்</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2010/03/14/46.aspx</link>
            <description>&lt;p&gt;தகவல்தளத்தினுள் தவறான தகவல் சேர்ந்துவிடாமல் இருக்க database constraints உதவுகிறது. தகவல் சீர்மைக்கு constraint இன்றியமையாதது. இந்த கன்ஸ்ட்ரைண்டில் பல வகைகள் உள்ளன. உதாரணமாக default value constraint (காலியான தகவல் இருப்பதை அனுமதிக்க/மறுக்க), foreign key constraint (மற்ற டேபிள்களுடன் எந்த  விட தொடர்பும் இல்லாத தகவல்களை நிராகரிக்க), check constraint (நாம் குறிப்பிடும் சில நிபந்தனைகளுக்கு உட்படும் தகவலை மட்டும் அனுமதிக்க) போன்றவை.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;`Check constraint கொஞ்சம் flexible ஆனது. நாம் விரும்பும் data validation எல்லாவற்றையும் ஒவ்வொரு fieldக்கும் வைக்கலாம்.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;எடுத்துக்காட்டாக, ஒரு தமிழ் வலைப்பதிவு மென்பொருளை உருவாக்குவதாக வைத்துக்கொள்வோம். இந்த மென்பொருளில் ஒரு கண்டிஷன் வைக்கலாம். வலைப்பதிவின் தலைப்பு கண்டிப்பாகத் தமிழில்தான் இருக்கவேண்டும். எதற்கு இப்படி ஒரு வெட்டிவேலை என்று நினைக்கத்தோன்ற்கிறதா? நல்ல கேள்வி. அத்ற்கு விடை இந்தப்பதிவின் கடைசியில் சொல்கிறேன்.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;அப்ளிகேஷன் அளவில் இதற்கு ஒரு நிபந்தனையை அமைத்து தகவல் உள்ளீட்டு நிலையிலேயே ஆங்கில எழுத்துக்கள் உள்ள தலைப்பைக் கட்டுப்படுத்திவிடலாம். ASP.NET regular expression validation control ஒன்றே இதற்குப் போதுமானது. அப்ளிகேஷன் சொதப்பினால் கூட, டேட்டாபேசில் தவறான தகவல் இடம்பெற்றுவிடக்கூடாது என்றால் அதற்கு ஒரு check constraint பயன்படுத்தலாம்.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;கீழ்க்கண்டவாறு டேபிள் structure இருக்கிறது என்று வைத்துக்கொள்வோம்:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Table Name&lt;/strong&gt;: TamilPosts&lt;/p&gt;
&lt;table width="400" cellspacing="0" cellpadding="2" border="2"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="200" valign="top"&gt;&lt;strong&gt;Column Name&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="200" valign="top"&gt;&lt;strong&gt;Data Type&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="200" valign="top"&gt;blogid&lt;/td&gt;
            &lt;td width="200" valign="top"&gt;int&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="200" valign="top"&gt;PostTitle&lt;/td&gt;
            &lt;td width="200" valign="top"&gt;nvarchar(1000)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="200" valign="top"&gt;PostContent&lt;/td&gt;
            &lt;td width="200" valign="top"&gt;nvarchar(4000)&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;இந்த டேபிளுக்கு PostTitle fieldல் ஆங்கில எழுத்துக்கள் இடம்பெறக்கூடாது.&lt;/p&gt;
&lt;p&gt;ஆங்கில எழுத்து, தமிழ் எழுத்து என்பதை எல்லாம் கண்டறிய SQL Serverல் ஃபங்க்‌ஷன் கிடையாது. எனவே, முதலில் இதை எழுதலாம். இப்படி:&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;pre class="csharpcode" id="codeSnippet"&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; [dbo].[HasEnglishLetters]&lt;br /&gt;(&lt;br /&gt;   &lt;span class="rem"&gt;-- Add the parameters for the function here&lt;/span&gt;&lt;br /&gt;    @PostTitle nvarchar(1000)&lt;br /&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;RETURNS&lt;/span&gt; &lt;span class="kwrd"&gt;bit&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Declare&lt;/span&gt; @HasEnglishContentbit&lt;br /&gt;    &lt;span class="kwrd"&gt;select&lt;/span&gt; @HasEnglishContent =&lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="kwrd"&gt;when&lt;/span&gt; @PostTitle &lt;span class="kwrd"&gt;like&lt;/span&gt; &lt;span class="str"&gt;'%[a-z]%'&lt;/span&gt; &lt;span class="kwrd"&gt;then&lt;/span&gt; 1else 0end&lt;br /&gt;    &lt;span class="rem"&gt;-- Return the result of the function&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; @HasEnglishContent&lt;br /&gt;&lt;br /&gt;END&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;   &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;மேலே உள்ள ஃபங்க்‌ஷன் ஒரு எழுத்துச்சரத்தை எடுத்துக்கொண்டு, அதில் ஆங்கில எழுத்துக்கள் கலந்து இருக்கிறதா இல்லையா என்பதைத் தெரிவிக்கும். ஆங்கில எழுத்துக்கள் இருக்கிறது என்றால் 1 என்றும், இல்லை என்றால் 0 என்றும் இந்த ஃபங்க்‌ஷன் தெரிவிக்கும்.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;இந்த ஃபங்க்‌ஷனை இப்பொழுது ஒரு check constraint-ஆக நம்முடைய டேபிளில் இணைக்கவேண்டும். அதற்கு கீழ்க்கண்ட SQL DDLஐப் பயன்படுத்தலாம்;:&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;pre class="csharpcode" id="codeSnippet"&gt;&lt;span class="kwrd"&gt;ALTER&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; [dbo].[TamilPosts]  &lt;span class="kwrd"&gt;WITH&lt;/span&gt; &lt;span class="kwrd"&gt;CHECK&lt;/span&gt; &lt;br /&gt;&lt;span class="kwrd"&gt;ADD&lt;/span&gt;  &lt;span class="kwrd"&gt;CONSTRAINT&lt;/span&gt; [CK_TamilPostTitle] &lt;span class="kwrd"&gt;CHECK&lt;/span&gt; &lt;br /&gt; (([dbo].[HasEnglishLetters]([PostTitle])=(0)))&lt;br /&gt;&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;ALTER&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt; [dbo].[TamilPosts] &lt;span class="kwrd"&gt;CHECK&lt;/span&gt; &lt;span class="kwrd"&gt;CONSTRAINT&lt;/span&gt; [CK_TamilPostTitle]&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;அல்லது, நேராக டேபிளின் டிசைன் வ்யூவுக்குச் சென்று, ஏதாவது ஒரு காலத்தின் மேல் வலது க்ளிக் செய்து Check Constraints… மெனுவைத் தேர்ந்தெடுக்கவேண்டும். பிறகு வரும் Check Constraints சாளரத்தில், Expression ப்ராப்பர்டியில் ([dbo].[HasEnglishLetters]([PostTitle])=(0)) என்று கொடுக்கவேண்டும். இதற்கான காட்சித்திரை:&lt;/p&gt;
&lt;p&gt;&lt;img width="639" height="617" title="New check constraint to reject data with english letters" alt="New check constraint to reject data with english letters" src="/images/blog_krupashankar_com/pullivalai/4/o_checkconstraint_tamilletter.jpg" /&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;இனிமேல் ஆங்கில எழுத்துள்ள தலைப்பை உள்ளிட்டால், “தூ தூ” என்று கீழ்க்கண்டவாறு துப்பும். முயற்சிப்போமா?&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;pre class="csharpcode" id="codeSnippet"&gt;insert &lt;span class="kwrd"&gt;into&lt;/span&gt; tamilposts &lt;span class="kwrd"&gt;values&lt;/span&gt;(1, &lt;span class="str"&gt;'test'&lt;/span&gt;, &lt;span class="str"&gt;'test content'&lt;/span&gt;)&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;Msg 547, Level 16, State 0, Line 1      &lt;br /&gt;
The INSERT statement conflicted with the CHECK constraint "CK_TamilPosts". The conflict occurred in database "pullivalai", table "dbo.TamilPosts", column 'PostTitle'.       &lt;br /&gt;
&lt;/font&gt;The statement has been terminated.&lt;/p&gt;
&lt;p&gt;இந்த பிழைச்செய்தியின் அடிப்படையில் முன்முகப்பு நிரலிலும் பயனர்ச்சொல்லில் பிழையை அறிவிக்கலாம்.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;தமிழில்தான் வலைப்பதிவின் தலைப்பு இருக்கவேண்டும் என்பதாக எதற்கு ஒரு மென்பொருள் இருக்கவேண்டும் என்று கேட்பவர்களுக்கு ... அது. .. வந்துங்க .. பிற்காலத்தில் இந்த மென்பொருளில் இட்ட பதிவைப் பார்த்து ஒரு படமெடுத்தால், அந்த திரைப்படத்திற்குத் தமிழில் பெயர் வைப்பது சுலபம், இல்லையா?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;ஆங்கிலச்சொற்கலைத் தமிழில் எழுதினால் அதை இந்த check constraint வைத்து எப்படி தடுக்க முடியும் என்று நினைக்கத்தோன்ற்கிறதா? நல்ல கேள்வி. அதற்கு விடை இந்தப்பதிவின்.... ச்சே! வேண்டாம். என்னுடைய மொக்கை எனக்கே சகிக்கவில்லை. இத்துடன் உங்களுக்கு விடுதலை.&lt;/p&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/46.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2010/03/14/46.aspx</guid>
            <pubDate>Sun, 14 Mar 2010 00:36:03 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/46.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2010/03/14/46.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/46.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ஸ்டோர்ட் ப்ரோசிஜர் டெம்ப்ளேட்</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2009/12/09/45.aspx</link>
            <description>&lt;p&gt;ஒரு டேபிளிலுள்ள தகவலை இற்றைப்படுத்தவும், புதுத்தகவலை உள்ளிடவும் எஸ்க்யூஎல் சர்வரில் ஸ்டோர்ட் ப்ரோசீஜர் எழுதும்போது டேபிளில் உள்ள காலம்களுக்குத் தகுந்தவாறு நிறைய காரணிகளை வரையறுக்க வேண்டியிருக்கும்.&lt;/p&gt;  &lt;p&gt;தூய தமிழில் சொல்வதென்றால், ஸ்டோர்ட் ப்ரோசீஜரில் இன்ஸர்ட்/அப்டேட் ஸ்டேட்மெண்ட்டில் பயன்படுத்த, நிறைய பாராமீட்டர்களை தட்டச்சடிக்க வேண்டியிருக்கும். டேபிள் மிகவும் பெரியதாக, அதிகமான காலம்கள் கொண்டதாக இருந்தால் இதற்கு நிறைய நேரமெடுக்கும். அதனால், ஒரு சிறு உதவிசெயல்நிரலை முயற்சித்தேன். இந்த நிரலிலுள்ள தகவல்தளத்தின் பெயரையும், டேபிளின் பெயரையும் தேவைக்கேற்ப மாற்றி F5 தட்டவும். CREATE PROCEDURE, INSERT, UPDATE statements எல்லாம் போட்டு ஓரளவிற்கு வேலையைக்குறைக்கும் ஸ்டோர்ட் ப்ரோசிஜர் டெம்ப்ளேட் கிடைக்கும்.&lt;/p&gt;  &lt;p&gt;&lt;font face="Arial Unicode MS" size="1"&gt;என்ன கொடுமை சரவணா இது. மேனேஜ்மெண்ட் ஸ்டூடியோவில் மெசேஜ் விண்டோ யூனிகோடுக்கு இசைவானதாக இல்லை!!! அதனால் எழுத்துக்கூட்டி, ஆங்கிலத்திலேயே வேலிடேஷன் பிழைச்செய்திகள்:&lt;/font&gt;&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div class="csharpcode" id="codeSnippet"&gt;     &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;USE&lt;/span&gt;  தகவல்தளம் ;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum2"&gt;   2:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span class="kwrd"&gt;declare&lt;/span&gt; @tablename &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(255)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span class="kwrd"&gt;set&lt;/span&gt; @tablename = &lt;span class="str"&gt;'test'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum5"&gt;   5:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span class="kwrd"&gt;declare&lt;/span&gt; @proceed &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(20)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum7"&gt;   7:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum8"&gt;   8:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @proceed = object_id(@tablename)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum10"&gt;  10:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum11"&gt;  11:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @proceed = [type] &lt;span class="kwrd"&gt;from&lt;/span&gt; sys.objects &lt;span class="kwrd"&gt;where&lt;/span&gt; name = @tablename&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum12"&gt;  12:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum13"&gt;  13:&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; @proceed &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum14"&gt;  14:&lt;/span&gt; &lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span class="kwrd"&gt;print&lt;/span&gt; &lt;span class="str"&gt;'Table "'&lt;/span&gt; + @tablename + &lt;span class="str"&gt;'" does not exist in this database. '&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum16"&gt;  16:&lt;/span&gt;     + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) + &lt;span class="str"&gt;'Please try changing the database name in the USE statement or&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum17"&gt;  17:&lt;/span&gt;     try correcting the table name.'&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum18"&gt;  18:&lt;/span&gt;     &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum19"&gt;  19:&lt;/span&gt; &lt;span class="kwrd"&gt;END&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum20"&gt;  20:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum21"&gt;  21:&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;span class="kwrd"&gt;not&lt;/span&gt; @proceed = &lt;span class="str"&gt;'U'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum22"&gt;  22:&lt;/span&gt; &lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum23"&gt;  23:&lt;/span&gt;     &lt;span class="kwrd"&gt;print&lt;/span&gt; &lt;span class="str"&gt;'Object "'&lt;/span&gt; + @tablename + &lt;span class="str"&gt;'" is not a table...'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum24"&gt;  24:&lt;/span&gt;     &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum25"&gt;  25:&lt;/span&gt; &lt;span class="kwrd"&gt;END&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum26"&gt;  26:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum27"&gt;  27:&lt;/span&gt; &lt;span class="kwrd"&gt;declare&lt;/span&gt; @&lt;span class="kwrd"&gt;structure&lt;/span&gt; &lt;span class="kwrd"&gt;table&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum28"&gt;  28:&lt;/span&gt; (&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum29"&gt;  29:&lt;/span&gt; colname &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(1000),&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum30"&gt;  30:&lt;/span&gt; coltype &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(50),&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum31"&gt;  31:&lt;/span&gt; colsize &lt;span class="kwrd"&gt;int&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum32"&gt;  32:&lt;/span&gt; )&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum33"&gt;  33:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum34"&gt;  34:&lt;/span&gt; insert &lt;span class="kwrd"&gt;into&lt;/span&gt; @&lt;span class="kwrd"&gt;structure&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum35"&gt;  35:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; sys.columns.name, sys.types.name, sys.columns.max_length&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum36"&gt;  36:&lt;/span&gt; &lt;span class="kwrd"&gt;from&lt;/span&gt; sys.columns &lt;span class="kwrd"&gt;left&lt;/span&gt; &lt;span class="kwrd"&gt;join&lt;/span&gt; sys.types&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum37"&gt;  37:&lt;/span&gt; &lt;span class="kwrd"&gt;on&lt;/span&gt; sys.columns.system_type_id = sys.types.system_type_id&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum38"&gt;  38:&lt;/span&gt; &lt;span class="kwrd"&gt;where&lt;/span&gt; object_id = object_id(@tablename)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum39"&gt;  39:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum40"&gt;  40:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum41"&gt;  41:&lt;/span&gt; &lt;span class="kwrd"&gt;declare&lt;/span&gt; @declaration &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(8000)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum42"&gt;  42:&lt;/span&gt; &lt;span class="kwrd"&gt;set&lt;/span&gt; @declaration = &lt;span class="str"&gt;''&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum43"&gt;  43:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @declaration = @declaration + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) + &lt;span class="str"&gt;'@'&lt;/span&gt; + colname&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum44"&gt;  44:&lt;/span&gt; + &lt;span class="str"&gt;' '&lt;/span&gt; + coltype + &lt;span class="str"&gt;'('&lt;/span&gt; +&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum45"&gt;  45:&lt;/span&gt; &lt;span class="kwrd"&gt;convert&lt;/span&gt;(&lt;span class="kwrd"&gt;varchar&lt;/span&gt;(20) , colsize) + &lt;span class="str"&gt;'),'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum46"&gt;  46:&lt;/span&gt; &lt;span class="kwrd"&gt;from&lt;/span&gt; @&lt;span class="kwrd"&gt;structure&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum47"&gt;  47:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum48"&gt;  48:&lt;/span&gt; --Build Insert &lt;span class="kwrd"&gt;statement&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum49"&gt;  49:&lt;/span&gt; &lt;span class="kwrd"&gt;declare&lt;/span&gt; @&lt;span class="kwrd"&gt;statement&lt;/span&gt; &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(8000)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum50"&gt;  50:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum51"&gt;  51:&lt;/span&gt; &lt;span class="kwrd"&gt;set&lt;/span&gt; @&lt;span class="kwrd"&gt;statement&lt;/span&gt; = &lt;span class="str"&gt;''&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum52"&gt;  52:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum53"&gt;  53:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @&lt;span class="kwrd"&gt;statement&lt;/span&gt; = @&lt;span class="kwrd"&gt;statement&lt;/span&gt; + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum54"&gt;  54:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum55"&gt;  55:&lt;/span&gt; &lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @&lt;span class="kwrd"&gt;STATEMENT&lt;/span&gt; = @&lt;span class="kwrd"&gt;statement&lt;/span&gt; + &lt;span class="str"&gt;'INSERT INTO '&lt;/span&gt; + @tablename + &lt;span class="str"&gt;' ('&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum56"&gt;  56:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum57"&gt;  57:&lt;/span&gt; &lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @&lt;span class="kwrd"&gt;STATEMENT&lt;/span&gt; = @&lt;span class="kwrd"&gt;statement&lt;/span&gt; + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) + colname + &lt;span class="str"&gt;','&lt;/span&gt; &lt;span class="kwrd"&gt;from&lt;/span&gt; @&lt;span class="kwrd"&gt;structure&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum58"&gt;  58:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum59"&gt;  59:&lt;/span&gt; &lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @&lt;span class="kwrd"&gt;STATEMENT&lt;/span&gt; = @&lt;span class="kwrd"&gt;STATEMENT&lt;/span&gt; + &lt;span class="str"&gt;')'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum60"&gt;  60:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum61"&gt;  61:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @&lt;span class="kwrd"&gt;statement&lt;/span&gt; = replace(@&lt;span class="kwrd"&gt;statement&lt;/span&gt;, &lt;span class="str"&gt;',)'&lt;/span&gt;, &lt;span class="str"&gt;')'&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum62"&gt;  62:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum63"&gt;  63:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @&lt;span class="kwrd"&gt;statement&lt;/span&gt; = @&lt;span class="kwrd"&gt;statement&lt;/span&gt; + &lt;span class="str"&gt;' values('&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum64"&gt;  64:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum65"&gt;  65:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum66"&gt;  66:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum67"&gt;  67:&lt;/span&gt; &lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @&lt;span class="kwrd"&gt;STATEMENT&lt;/span&gt; = @&lt;span class="kwrd"&gt;STATEMENT&lt;/span&gt; + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) + &lt;span class="str"&gt;'@'&lt;/span&gt; + colname + &lt;span class="str"&gt;','&lt;/span&gt; &lt;span class="kwrd"&gt;from&lt;/span&gt; @&lt;span class="kwrd"&gt;structure&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum68"&gt;  68:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum69"&gt;  69:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @&lt;span class="kwrd"&gt;statement&lt;/span&gt; = @&lt;span class="kwrd"&gt;statement&lt;/span&gt; + &lt;span class="str"&gt;')'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum70"&gt;  70:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum71"&gt;  71:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @&lt;span class="kwrd"&gt;statement&lt;/span&gt; = replace(@&lt;span class="kwrd"&gt;statement&lt;/span&gt;, &lt;span class="str"&gt;',)'&lt;/span&gt;, &lt;span class="str"&gt;')'&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum72"&gt;  72:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum73"&gt;  73:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum74"&gt;  74:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @declaration = &lt;span class="kwrd"&gt;substring&lt;/span&gt;(@declaration, 1, len(@declaration)-1)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum75"&gt;  75:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum76"&gt;  76:&lt;/span&gt; &lt;span class="kwrd"&gt;print&lt;/span&gt; &lt;span class="str"&gt;'CREATE PROCEDURE dbo.PROC1 '&lt;/span&gt; + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) + &lt;span class="str"&gt;'('&lt;/span&gt; + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) +  @declaration&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum77"&gt;  77:&lt;/span&gt; + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) + &lt;span class="str"&gt;')'&lt;/span&gt; + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) + &lt;span class="str"&gt;'AS'&lt;/span&gt; + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum78"&gt;  78:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum79"&gt;  79:&lt;/span&gt; &lt;span class="kwrd"&gt;print&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt;(13)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum80"&gt;  80:&lt;/span&gt; &lt;span class="kwrd"&gt;print&lt;/span&gt; @&lt;span class="kwrd"&gt;statement&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum81"&gt;  81:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum82"&gt;  82:&lt;/span&gt; --&lt;span class="kwrd"&gt;Update&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum83"&gt;  83:&lt;/span&gt; &lt;span class="kwrd"&gt;declare&lt;/span&gt; @updatestatement &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(3000)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum84"&gt;  84:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum85"&gt;  85:&lt;/span&gt; &lt;span class="kwrd"&gt;set&lt;/span&gt; @updatestatement = &lt;span class="str"&gt;'UPDATE '&lt;/span&gt; + @tablename + &lt;span class="str"&gt;' SET '&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum86"&gt;  86:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum87"&gt;  87:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @updatestatement  = @updatestatement  + &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) + &lt;span class="str"&gt;' '&lt;/span&gt; + colname +&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum88"&gt;  88:&lt;/span&gt;     &lt;span class="str"&gt;' = @'&lt;/span&gt; + colname + &lt;span class="str"&gt;','&lt;/span&gt; &lt;span class="kwrd"&gt;from&lt;/span&gt; @&lt;span class="kwrd"&gt;structure&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum89"&gt;  89:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum90"&gt;  90:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @updatestatement = @updatestatement + &lt;span class="str"&gt;')'&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum91"&gt;  91:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum92"&gt;  92:&lt;/span&gt; &lt;span class="kwrd"&gt;select&lt;/span&gt; @updatestatement = replace(@updatestatement, &lt;span class="str"&gt;',)'&lt;/span&gt;, &lt;span class="kwrd"&gt;char&lt;/span&gt;(13) + &lt;span class="str"&gt;' WHERE 1=2'&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum93"&gt;  93:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum94"&gt;  94:&lt;/span&gt; &lt;span class="kwrd"&gt;print&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt;(13)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum95"&gt;  95:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum" id="lnum96"&gt;  96:&lt;/span&gt; &lt;span class="kwrd"&gt;print&lt;/span&gt; @updatestatement&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/45.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2009/12/09/45.aspx</guid>
            <pubDate>Wed, 09 Dec 2009 13:15:00 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/45.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2009/12/09/45.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/45.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Recordsetல் தானாகவே ஒரு வரிசை எண்ணை வரவழைக்க...</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2009/03/25/43.aspx</link>
            <description>சில நேரங்களில், எஸ்க்யூஎல் சர்வரிலிருந்து தகவலை எடுக்கும்பொழுது, தொடர்ச்சியான ஒரு எண்ணும் வரவழைக்கவேண்டிய தேவை இருக்கலாம். உதாரணமாக, கீழ்க்கண்டவாறு ஒரு ஒரு வினவல் இருப்பதாக வைத்துக்கொள்வோம்:&lt;br /&gt;
&lt;br /&gt;
select * from table1&lt;br /&gt;
&lt;br /&gt;
அதன் விடை இப்படி இருப்பதாக இருக்கிறது என்று வைத்துக்கொள்வோம்:&lt;br /&gt;
&lt;br /&gt;
&lt;table width="105" cellspacing="0" cellpadding="0" border="0" x:str="" style="border-collapse: collapse; width: 78pt;"&gt;
    &lt;col width="31" style="width: 23pt;" /&gt;  &lt;col width="35" style="width: 26pt;" /&gt;  &lt;col width="39" style="width: 29pt;" /&gt;
    &lt;tbody&gt;
        &lt;tr height="17" style="height: 12.75pt; font-weight: bold;"&gt;
            &lt;td height="17" width="31" class="xl25" style="height: 12.75pt; width: 23pt;"&gt;col1&lt;/td&gt;
            &lt;td width="35" class="xl25" style="border-left: medium none; width: 26pt;"&gt;col2&lt;/td&gt;
            &lt;td width="39" class="xl25" style="border-left: medium none; width: 29pt;"&gt;col3&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height="17" style="height: 12.75pt;"&gt;
            &lt;td height="17" class="xl24" style="border-top: medium none; height: 12.75pt;"&gt;inv1&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;" x:num=""&gt;2000&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;cust1&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height="17" style="height: 12.75pt;"&gt;
            &lt;td height="17" class="xl24" style="border-top: medium none; height: 12.75pt;"&gt;inv3&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;" x:num=""&gt;300&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;cust1&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height="17" style="height: 12.75pt;"&gt;
            &lt;td height="17" class="xl24" style="border-top: medium none; height: 12.75pt;"&gt;inv4&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;" x:num=""&gt;10&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;cust1&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height="17" style="height: 12.75pt;"&gt;
            &lt;td height="17" class="xl24" style="border-top: medium none; height: 12.75pt;"&gt;inv2&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;" x:num=""&gt;294&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;cust1&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
இதனோடு இன்னொரு காலம் சேர்த்து, கீழ்க்கண்டவாறான விடை நமக்குத் தேவை என்றும் வைத்துக்கொள்வோம்:&lt;br /&gt;
&lt;br /&gt;
&lt;table width="141" cellspacing="0" cellpadding="0" border="0" x:str="" style="border-collapse: collapse; width: 105pt;"&gt;
    &lt;col width="36" style="width: 27pt;" /&gt;  &lt;col width="31" style="width: 23pt;" /&gt;  &lt;col width="35" style="width: 26pt;" /&gt;  &lt;col width="39" style="width: 29pt;" /&gt;
    &lt;tbody&gt;
        &lt;tr height="17" style="height: 12.75pt; font-weight: bold;"&gt;
            &lt;td height="17" width="36" class="xl25" style="height: 12.75pt; width: 27pt;"&gt;S.No&lt;/td&gt;
            &lt;td width="31" class="xl25" style="border-left: medium none; width: 23pt;"&gt;col1&lt;/td&gt;
            &lt;td width="35" class="xl25" style="border-left: medium none; width: 26pt;"&gt;col2&lt;/td&gt;
            &lt;td width="39" class="xl25" style="border-left: medium none; width: 29pt;"&gt;col3&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height="17" style="height: 12.75pt;"&gt;
            &lt;td height="17" class="xl24" style="border-top: medium none; height: 12.75pt;" x:num=""&gt;1&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;inv1&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;" x:num=""&gt;2000&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;cust1&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height="17" style="height: 12.75pt;"&gt;
            &lt;td height="17" class="xl24" style="border-top: medium none; height: 12.75pt;" x:num=""&gt;2&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;inv2&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;" x:num=""&gt;294&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;cust1&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height="17" style="height: 12.75pt;"&gt;
            &lt;td height="17" class="xl24" style="border-top: medium none; height: 12.75pt;" x:num=""&gt;3&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;inv3&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;" x:num=""&gt;300&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;cust1&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height="17" style="height: 12.75pt;"&gt;
            &lt;td height="17" class="xl24" style="border-top: medium none; height: 12.75pt;" x:num=""&gt;4&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;inv4&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;" x:num=""&gt;10&lt;/td&gt;
            &lt;td class="xl24" style="border-top: medium none; border-left: medium none;"&gt;cust1&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
இதனை, எஸ்க்யூஎல் சர்வர் 2000ல், கீழ்க்கண்ட ஒரு வழிமுறையில் முயற்சிக்கலாம்:&lt;br /&gt;
&lt;br /&gt;
1) எல்லா ரெக்கார்டுகளையும் ஒரு தற்காலிக டேபிளில் சேமிக்கவேண்டும்&lt;br /&gt;
2) அந்த தற்காலிக டேபிளில் வரிசை எண்ணிற்கான ஒரு காலத்தை சேர்த்துக்கொள்ளவேண்டும்&lt;br /&gt;
3) இந்த வரிசை எண்ணிற்கான காலத்தை update வினவலைக் கொண்டு வரிசையான எண்களை நிரப்ப வேண்டும்&lt;br /&gt;
4) பிறகு இந்த தற்காலிக டேபிளில் உள்ள வரிசைகளை வினவிய மென்பொருளுக்கு அனுப்பவேண்டும்.&lt;br /&gt;
&lt;br /&gt;
ஆனால், இது மிகுந்த நேரத்தையும், நினைவகத்தையும் விழுங்கும் ஒரு செயலாகும். தகவலை டேபிளிலிருந்து எடுப்பதுடன் இவையெல்லாம் கூடுதல் வேலைகளாகும்.&lt;br /&gt;
&lt;br /&gt;
அதிர்ஷ்டவசமாக, எஸ்க்யூஎல் சர்வர் 2005ல், உள்ளமைந்த ஒரு ஃபங்க்‌ஷனே இந்த காரியத்தை நமக்குச் சுலபமாக செய்து தரும். அதன் பெயர் row_number().&lt;br /&gt;
&lt;br /&gt;
மேற்கண்ட வினவலை நாம் மாற்றியமைக்க வேண்டுமானால், இவ்வாறு வினவலாம்:&lt;br /&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt; row_number() &lt;span style="color: rgb(0, 0, 255);"&gt;over&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;order by&lt;/span&gt; col1) &lt;span style="color: rgb(0, 0, 255);"&gt;as &lt;/span&gt;[S.No], * &lt;span style="color: rgb(0, 0, 255);"&gt;from &lt;/span&gt;table1&lt;br /&gt;
&lt;br /&gt;
இப்படி எழுதினால், தற்காலிக/நிகழ்நிலை டேபிள்கள், அப்டேட் வினவல் எதுவும் தேவையில்லை. எனினும், மிகப்பெரிய தகவல்தளங்களில், order by மிகுந்த நேரம்பிடிக்கும். அப்படிப்பட்ட சூழ்நிலையில், Common Table Expressionsஐப் பயன்படுத்தலாம். CTE அல்லது &lt;a href="http://msdn.microsoft.com/en-us/library/ms190766.aspx"&gt;Common Table Expressions&lt;/a&gt; என்பதும் ஒரு வகையில் தற்காலிக டேபிள், derived table போன்றதுதான். view என்றும் சொல்லலாம்.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;with &lt;/span&gt;result &lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt; &lt;br /&gt;
(&lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt; * &lt;span style="color: rgb(0, 0, 255);"&gt;from &lt;/span&gt;table1&lt;br /&gt;
)&lt;br /&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt; row_number() &lt;span style="color: rgb(0, 0, 255);"&gt;over&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;order by&lt;/span&gt; col1) &lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt; [S.No], * &lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt; result&lt;br /&gt;
&lt;br /&gt;
இந்த வினவல் தகவல் தளத்திலிருந்து முதலில் எல்லா தகவலையும் எடுத்துக்கொள்கிறது. பிறகு வரிசைப்படுத்தி, வரிசை எண்களை வினவிய மென்பொருளுக்கு அனுப்புகிறது. எந்தவித அப்டேட், தற்காலிக டேபிளின் தேவை இல்லாமலே இதை SQL Server 2005ல் செய்யமுடியும்&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/43.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2009/03/25/43.aspx</guid>
            <pubDate>Tue, 24 Mar 2009 21:50:18 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/43.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2009/03/25/43.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/43.aspx</wfw:commentRss>
        </item>
        <item>
            <title>சுருங்கிய கோப்பு, நெருங்காத டேட்டாபேஸ், நொறுங்கிய இதயம்...</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2008/07/23/40.aspx</link>
            <description>&lt;p&gt;ஒரு கணிப்பொறியில் உள்ள டேட்டாபேசை மற்றொரு கணிப்பொறிக்கு மாற்ற/பிரதி எடுக்க பல வழிகள் உள்ளன. அவற்றில் ஒன்று டேட்டாபேசின் mdb மற்றும் log கோப்புக்களை நேரடியாக இரண்டாவது கணினியில் உள்ள எஸ்க்யூஎல் சர்வருக்கு இணைப்பது. இதை மேனேஜ்மெண்ட் ஸ்டூடியோ துணைகொண்டு இடைமுகப்பு வழியாகவோ, அல்லது கீழ்க்காணும் வினவற்தொகுப்பின் உதவியுடனோ செய்யலாம்:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;CREATE&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;DATABASE&lt;/font&gt;&lt;font size="+0"&gt; [thendral] &lt;/font&gt;&lt;font color="#0000ff"&gt;ON&lt;br /&gt;
&lt;/font&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;FILENAME&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;font size="+0"&gt; N&lt;/font&gt;&lt;font color="#ff0000"&gt;'drive:\path\dbname_Data.MDF'&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;),&lt;br /&gt;
(&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;FILENAME&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;font size="+0"&gt; N&lt;/font&gt;&lt;font color="#ff0000"&gt;'drive:\path\dbname_Log.LDF'&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;br /&gt;
FOR&lt;/font&gt;&lt;font size="+0"&gt; ATTACH&lt;br /&gt;
GO&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;not&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;exists&lt;/font&gt; &lt;font color="#808080"&gt;(&lt;/font&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;name&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;font size="+0"&gt; master&lt;/font&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;font color="#008000"&gt;sys.databases&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;name&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;font size="+0"&gt; N&lt;/font&gt;&lt;font color="#ff0000"&gt;'dbname'&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;and&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#ff00ff"&gt;SUSER_SNAME&lt;/font&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;font size="+0"&gt;sd&lt;/font&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;font size="+0"&gt;owner_sid&lt;/font&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#ff00ff"&gt;SUSER_SNAME&lt;/font&gt;&lt;font color="#808080"&gt;()&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;font size="+0"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;EXEC&lt;/font&gt;&lt;font size="+0"&gt; [dbname]&lt;/font&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;font size="+0"&gt;dbo&lt;/font&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;font color="#800000"&gt;sp_changedbowner&lt;/font&gt;&lt;font size="+0"&gt; @loginame&lt;/font&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;font size="+0"&gt;N&lt;/font&gt;&lt;font color="#ff0000"&gt;'machinename\adminuser'&lt;/font&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;font size="+0"&gt; @map&lt;/font&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;font size="+0"&gt;false&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;இவ்வாறு செய்யும் பொழுது, சில சமயம் டேட்டாபேசை இணைக்க முடியாமல் கீழ்க்கண்ட பிழைச்செய்தி வரக்கூடும்:&lt;/p&gt;
&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;font size="+0"&gt;
&lt;p&gt;Msg 5118, Level 16, State 1, Line 1&lt;br /&gt;
The file "drive\path\dbname_Data.MDF" is compressed but does not reside in a read-only database or filegroup. The file must be decompressed.&lt;/p&gt;
&lt;p&gt;எந்த விதமான கம்ப்ரஷனும் செய்யாமல் அப்படியேதானே முதல் கணிப்பொறியிலிருந்து எடுத்துக்கொண்டு வந்தோம், இது என்னடா இது ரோதனை என்று முதலில் படுத்தும். உண்மையில் சுருங்கிக்கிடப்பது இந்த டேட்டாபேஸ் கோப்புகள் இருக்கும் வன்தகடுதானேயொழிய இந்த கோப்புகளே சுருங்கிவிடவில்லை.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;இந்த ப்ரச்சனையை சரி செய்ய, குறிப்பிட்ட ட்ரைவை decompress செய்தாலே போதும், எல்லாம் சுபமாக முடியும். &lt;/p&gt;
&lt;p&gt;&lt;img alt="Decompress Drive" align="right" src="http://blog.krupashankar.com/images/blog_krupashankar_com/pullivalai/4/r_drive_decompress.jpg" /&gt;&lt;/p&gt;
இதைச்செய்ய, ட்ரைவின் மேல் right click செய்து, ப்ராப்பர்டீஸ் ஆப்ஷனைத் தேர்ந்தெடுக்க வேண்டும். பிறகு வரும் ப்ராப்பர்ட்டி பெட்டியில், Compress drive to save disk spaceஐ uncheck செய்து, OKவை க்ளிக் பண்ண வேண்டும்.
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;அந்த ட்ரைவின் அளவையும் அதிலுள்ள கோப்புக்களின் எண்ணிக்கையையும் பொறுத்து, இந்த செயல் முழுமையடைய சிறிது நேரமாகலாம். இதன் பிறகு mdf கோப்பை அட்டாச் செய்தால் இந்த பிழைச்செய்தி வராமல் சமர்த்தாக இரண்டாம் கணினியில் டேட்டாபேஸ் உருவாகிவிடும்.&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/40.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2008/07/23/40.aspx</guid>
            <pubDate>Wed, 23 Jul 2008 18:05:40 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/40.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2008/07/23/40.aspx#feedback</comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/40.aspx</wfw:commentRss>
        </item>
        <item>
            <title>எஸ்க்யூஎல் சர்வர் timeout ஆகிறதா?</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2008/06/13/38.aspx</link>
            <description>&lt;font face="Arial"&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;செந்தில்&lt;/strong&gt;: &lt;/font&gt;அண்ணே, எனக்கு ஒரு சந்தேகம்ணே...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;கௌண்டமணி&lt;/strong&gt;: &lt;/font&gt;டெக்னிக்கலா எதாவது சந்தேகம்னா, கேளு. வேற ஏதாவது கோக்கு மாக்கா கேட்ட, அப்பறம் தலையயும் ஓம்மூஞ்சி மாதிரி மாத்திடுவேண்டா client feedback தலையா...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;செந்தில்&lt;/strong&gt;: &lt;/font&gt;அதில்லண்ணே... ASP.NETல இந்த timeout error எரர், timeout எரர்ன்னு ஒன்னு வருதே, அத எப்படின்னே சரி பண்றது?&lt;br /&gt;
&lt;br /&gt;
&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;கௌண்டமணி&lt;/strong&gt;: &lt;/font&gt;அடேய் க்ளைன்ட் வாயா... இப்படி பொத்தாம்பொதுவா user மாதிரி எரர் ரிப்போர்ட் பண்ணினா எப்படிடா புரியும்? என்ன எரர்ன்னு முழுசா சொல்லுடா...&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;செந்தில்&lt;/strong&gt;: &lt;/font&gt;&lt;font face="Arial" color="#ff0000"&gt;&lt;strong&gt;Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;டி. ராஜேந்தர்&lt;/strong&gt;: &lt;/font&gt;யம்மா தங்கச்சி, எர்ரர் உருவாச்சி. வீட்டுக்கு நேரமாச்சி, வயிறும் தடுத்தாச்சி.&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;ஒனக்கு நெனவிருக்காம்மா... சின்ன வயசுல எஸ்க்யூஎல் சர்வரோட கனெக்ட் பண்ணி வெளயாடும்போது,  டைம் ஔட் எர்ரர் வருது டைம் ஔட் எர்ரர் வருதுன்னு நீ சொல்லுவ, டைம் ஔட் value அதிகமாக்குன்னு நான் சொல்லுவேன். கொஞ்ச நால் நான் வேலை கிடைக்காம திண்டாடினப்ப, நீ எனக்கு டைம் ஔட்டுன்னு சொல்லி கிண்டல் பண்ணுவ.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;கனக்ஷன் ஸ்ட்ரிங்குல &lt;/font&gt;Connect Timeout&lt;font face="Arial"&gt;டா&lt;br /&gt;
&lt;font face="Arial"&gt;கமான்ட்டு ஆப்ஜக்டுல commandtimeout&lt;font face="Arial"&gt;டா&lt;br /&gt;
&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;ரெண்டுத்துக்கும் வித்யாசம் பெயருலயே இருக்குடா&lt;br /&gt;
&lt;font face="Arial"&gt;டண்டனக்கா ஏ டணக்கணக்கா &lt;font face="Arial"&gt;டண்டனக்கா ஏ டணக்கணக்கா&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;விஜயகாந்த்&lt;/strong&gt;: &lt;/font&gt;டேய், நிறுத்துடா... டெவலப்மென்ட்டுல எனக்குப் புடிக்காத ஒரே வார்த்தை....  எர்ரர்.  SQLCommand objectல எத்தன ப்ராப்பர்ட்டி இருக்குன்னு தெரியுமா ஒனக்கு? 1 ஸ்ட்ரிங்க் ப்ராப்பர்ட்டி இருக்கு, 23 மெத்தட்ஸ் இருக்கு, 1 பூலியன் ப்ராப்பர்ட்டி இருக்கு, 1 இன்ட் ப்ராப்பர்ட்டி இருக்கு.  கனக்ஷன் ஸ்ட்ரிங்குல எத்தனை ஆட்ரிப்யூட் இருக்குன்னு தெரியுமா ஒனக்...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;வடிவேலு&lt;/strong&gt;: &lt;/font&gt;ஆஹா... ஆரம்பிச்சுட்டாய்ங்க்கய்யா ஆரம்பிச்சுட்டாய்ங்ஞ... &lt;font face="Arial"&gt;நெறய டேட்டாவ ப்ராசஸ் பண்ணும் போது இப்படி ஒரு எரர் வந்தா என்ன பண்ணனும்னுதானடா இவன் கேட்டான்... அதுக்குப் போய் ஆளாளுக்கு இப்படி கொல்றீங்களேடா...&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;பார்த்திபன்&lt;/strong&gt;:  &lt;font face="Arial"&gt;ஆளை ஆளுக்கு கொல்லும் போது எதுக்கு நீ டேட்டாவை ப்ராசஸ் பண்ற? டேய், தீவிரவாதியா நீ?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;வடிவேலு&lt;/strong&gt;: ஆஹா, அவனா நீயீ? இதோ பாருப்பா... ஒனக்கு பதில் தெரிஞ்சா சொல்லு. இல்ல ஆள விடு, நான் பாட்டுக்கு போய்க்கிட்டே இருக்கேன்.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;பார்த்திபன்&lt;/strong&gt;: பதில் சொல்லாட்டி ஆள விடணுமா இல்ல பதில் தெரியாட்டி ஆள விடணுமா?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;வடிவேலு&lt;/strong&gt;: எனக்கு டைம் ஆச்சு. நான் ஆபீஸ் போய் தூங்கணும். நான் வரேம்பா.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;பார்த்திபன்&lt;/strong&gt;: எஸ்க்யூஎல் சர்வரோட தொடர்பை ஏற்படுத்தறதுக்கு Connect Timeout  ஆட்ரிப்யூட்டை கனெக்ஷன் ஸ்ட்ரிங்க்ல குடுக்கணும். &lt;font face="Arial"&gt;எவ்வளவு நேரம் வரை தொடர்பு ஏற்படுத்த காத்திருந்து அப்பறம் எரர் மெசேஜை அனுப்பலாம்னு சொல்றதுக்குதான் இந்த Connect Timeout. &lt;/font&gt;அதுக்கும் இந்த timeout expiredக்கும் சம்பந்தம் இல்லை.  இதுக்கு டேட்டா அடாப்டரோட SelectCommandலயோ அல்லது SqlCommand ஆப்ஜக்ட்லயோ இருக்கற CommandTimeout ப்ராப்பார்ட்டீலதான்...&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;வடிவேலு&lt;/strong&gt;: டைம் செட் பண்ணணுமா?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;பார்த்திபன்&lt;/strong&gt;: என்ன, ஆபீஸ்ல போய் தூங்கறதுக்குதான் டைம் செட் பண்ணப்போறியா?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;வடிவேலு&lt;/strong&gt;: சேச்சே, அதெல்லாம் இல்லப்பா...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;பார்த்திபன்&lt;/strong&gt;: ஓ, அப்போ ஒனக்கு ஆபீசே இல்லயா? வேல இல்லாம சும்மா வெட்டியாதான் சுத்தறயா?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;வடிவேலு&lt;/strong&gt;: இருப்பா இருப்பா... அது ஒனக்கு எப்படி தெரியும்?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;பார்த்திபன்&lt;/strong&gt;: இதுதான், போட்டு... வாங்கறது.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/38.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2008/06/13/38.aspx</guid>
            <pubDate>Thu, 12 Jun 2008 20:57:55 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/38.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2008/06/13/38.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/38.aspx</wfw:commentRss>
        </item>
        <item>
            <title>எக்சல் கோப்பைப் டாட்நெட்டில் பயன்படுத்தினால் தகவல் இழப்பு ஏற்படுகிறதா? </title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2008/04/03/37.aspx</link>
            <description>&lt;p&gt;&lt;font size="+0"&gt;எக்சல் கோப்புகளை எக்சல் ஆப்ஜக்ட் பயன்படுத்தாமலேயே வெறும் OleDbConnectionனை மட்டும் வைத்துக்கொண்டே டாட்நெட் &lt;font size="+0"&gt;தொழில்நுட்பம்&lt;/font&gt; பயன்படுத்த முடியும், கீழ்க்கண்டவாறு:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;&lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt; xlConn = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt;(@&lt;font color="#ff0000"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\filename.xls;Extended Properties='Excel 8.0;'"&lt;/font&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;இதிலுள்ள ஒவ்வொரு சீட்டையும் ஒரு டேபிலாகப் படிக்கலாம்.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;பிறகு டேபிளில் உள்ள வரிசைகளைப் படிக்க "select * from [sheet1$]" என்று அடாப்டரிலோ அல்லது கமாண்ட் ஆப்ஜக்டிலோ வினவளைக் கொடுக்கவேண்டியதுதான். இதில் ஒரு சிறிய பிரச்சனை என்னவென்றால் &lt;font face="Arial"&gt;டேட்டாடைப்பை&lt;/font&gt; OleDbConnection புரிந்துகொள்ளும் விதம்தான். உதாரணமாக, எண்கள் மட்டும் இருக்கவேண்டிய ஒரு காலத்தில் (column) ஒரு எழுத்துச்சரத் தகவல் இருந்தது என்றால் அந்த தகவலை எடுத்துக்கொள்ளாமல் வெறும் null என்று அந்த இடத்தில் எடுத்துக்கொள்ளும். இதைத் தவிர்க்க, தகவல்தொடர்ப்புச் சரத்தில், IMEX=1 என்று சேர்த்துத் தரவேண்டும், கீழ்க்கண்டவாறு:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;&lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt; xlConn = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt;(@&lt;font color="#ff0000"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\filename.xls;Extended Properties='Excel 8.0;IMEX=1'"&lt;/font&gt;);&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/37.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2008/04/03/37.aspx</guid>
            <pubDate>Thu, 03 Apr 2008 07:26:38 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/37.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2008/04/03/37.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/37.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ஸ்டோர்ட் ப்ரோசீஜர் இயக்கவுரிமை ப்ரச்சனை: ஓனரை மாத்த வேணாம்!</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2007/08/29/30.aspx</link>
            <description>&lt;br /&gt;
பகிர்வு நிலையில் இருக்கும் வெப் சர்வரில் (shared hosting) நிறுவப்பட்ட இணையப் பயன்பாடுகளில,் ஸ்டோர்ட் ப்ரோசீஜரை அழைக்கும்பொழுது அடுத்துள்ள வரியினைப் போன்ற பிழைச்செய்தி சில நேரம் வரலாம்:&lt;br /&gt;
&lt;br /&gt;
&lt;br style="font-weight: bold; color: rgb(255, 102, 0);" /&gt;
&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt; EXECUTE permission denied on object 'storedprocedure_name்' database 'டேட்டாபேஸ்' owner 'குப்புசாமி'&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SQL Script கோப்பு அல்லது அப்படியே காப்பி/பேஸ்ட் செய்யப்பட்ட ஸ்டோர்ட் ப்ரோசிஜர் வரிகளைப் பயன்படுத்தி உருவாக்கும்பொழுது, குறிப்பிட்ட ச்டோர்ட் ப்ரோசிஜருக்கான சொந்தக்காரர் dbo என்றே அமைந்து விடும் நிலை ஏற்படுகிறது. அதாவது, dbo.storedprocedure_name என்ற முழுப்பெயரில். உரிமைகள் வரையறுக்கப்பட்ட ஒரு பயனர்க்கணக்கிலிருந்து இயக்கப்படும்போது, இவ்விதமான ஸ்டோர்ட் ப்ரோசிஜர் (மற்றும் எல்லா விதமான டேட்டாபேஸ் ஆப்ஜக்ட்களுமே) மிகவும் பாதுகாப்பாக இருக்கிறது. எனினும், அப்படிப்பட்ட பயனர்க்கணக்குக்கு இந்த ஸ்டோர்ட் ப்ரோசிஜரை அழைக்க, இயக்குவுரிமை எனப்படும் execute permission இருக்க வேண்டும். இல்லையென்றால் அப்படிப்பட்ட பயனர்க்கணக்கினால் ஒரு பெரிய பயனும் இல்லை.&lt;br /&gt;
&lt;br /&gt;
வெப் சர்வர் நிறுவன உதவியாளர்களிடம் இப்படிப்பட்ட பிழைச்செய்தியைப் பற்றி முறையிட்டால், "ஆப்ஜக்ட் ஓனரை மாற்றிவிடுங்கள்" என்று சர்வசாதாரணமாக பதில் வரும். கீழ்க்காணும் வரி அதற்கு உதவும்:&lt;font size="2" face="Verdana"&gt;
&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;EXEC&lt;/span&gt; &lt;span style="color: rgb(153, 51, 0);"&gt;sp_changeobjectowner&lt;/span&gt; '&lt;span style="color: rgb(255, 0, 0);"&gt;storedprocedure_name&lt;/span&gt;', '&lt;span style="color: rgb(255, 0, 0);"&gt;குப்புசாமி&lt;/span&gt;'&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;/font&gt;அதாவது dbo.storedprocedure_name என்பதை, குப்புசாமி.storedprocedure_name என்பதாக மாற்றச்சொல்லி அறிவுரை வரும். ஆனால் இது நல்லதல்ல. இதைவிடச் சிறந்த மற்றும் சுலபமான முறை, இந்த ஸ்டோர்ட் ப்ரோசிஜருக்கு இயக்கவுரிமை கொடுப்பதுதான். இந்த மாதிரி:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;
GRANT EXECUTE ON&lt;/span&gt; dbo.storedprocedure_name &lt;span style="color: rgb(0, 0, 255);"&gt;TO&lt;/span&gt; குப்புசாமி&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
இதனால், பற்பல பயனர்க்கணக்குகள் இதே ஸ்டோர்ட் ப்ரோசிஜரை இயக்க வழி செய்யலாம். அதே நேரம், டேட்டாபேஸ் ஓனரிடம் இந்த ஸ்டோர்ட் ப்ரோசிஜருக்கான எல்லா கட்டுபாடும் தங்கி இருக்கும். உரிமை குறைந்த வேறு பயனர்கள் இதை அழிக்கவோ மாற்றவோ முடியாது.&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/30.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2007/08/29/30.aspx</guid>
            <pubDate>Wed, 29 Aug 2007 16:37:44 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/30.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2007/08/29/30.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/30.aspx</wfw:commentRss>
        </item>
        <item>
            <title>char, varchar-என்ன வேறுபாடு?</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2007/05/24/28.aspx</link>
            <description>எஸ்க்யூஎல் சர்வரில் char, varchar என்று இரண்டு வெவ்வேறு மாறிலி வகைகள், ஒரே நோக்கத்திற்காக இருக்கின்றன.&lt;br /&gt;
&lt;br /&gt;
ஆரம்பக்கால தகவல்தள வடிவமைப்பாளருக்கு இவ்விரண்டில் சிறிய எழுத்துச் சரங்களை(small strings)த் தேக்கி வைக்க எதைத் தேர்ந்தெடுப்பது என்பதில் சில நேரங்களில் குழப்பம் வரலாம். பெரும்பாலும் varcharதான் தேர்ந்தெடுக்கப் படுகிறது. ஒப்பீட்டளவில், varcharன் பொருளான "மாற்றி அமைத்துக்கொள்ளும் மாறிலி வகை" (variable character) என்ற பண்பின் ஈர்ப்பு இதற்குக் காரணமாக இருக்கலாமோ என்று தோன்றுகிறது.&lt;br /&gt;
&lt;br /&gt;
தத்தமது தகவலைச் சேமிக்கும் முறை மற்றும் வினவலுக்குத் தகவலைத் திரட்டி வழங்கும் முறைகளால் char மற்றும் varchar மாறிலிகள் வேறுபடுகின்றன. இவற்றுக்கு இடையேயான அடிப்படை வேற்றுமை என்று பார்த்தால், மிகவும் பிரசித்தமான, சரங்களைப் பதியும் விதம் எனலாம். அதாவது, char வகையில் தேக்கி வைக்கப்படும் தகவலானது, அந்த fieldன் வரையறுக்கப்பட்ட நீளத்தைவிடச் சிறியதாயினும் கூட வரையறுக்கப்பட்ட முழு இடத்தையும் எடுத்துக்கொள்ளும். varchar fieldல் சேமிக்கப்பட்ட தகவல், அதன் நீளத்திற்கு உண்டான இடத்தை மட்டுமே எடுத்துக்கொள்ளும்.&lt;br /&gt;
&lt;br /&gt;
 ஒரு எடுத்துக்காட்டிற்கு, கீழுள்ள டேபிளைப் பார்ப்போம்.&lt;br /&gt;
&lt;br /&gt;
&lt;table width="200" cellspacing="1" cellpadding="1" border="1" align="left" summary=""&gt;
    &lt;caption&gt;mytable&lt;/caption&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;charfield&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;char(10)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;varcharfield&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;varchar(10)&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
இந்த டேபிளில் இரண்டு fieldகள் இருக்கின்றன, ஒன்று char வகை, இன்னொன்று varchar வகை. ஒரே மாதிரியான தகவல் இரண்டு columnகளிலும் உள்ளிடப்படுகிறது என்று வைத்துக்கொள்வோம், கீழ்க்கண்டவாறு:&lt;br /&gt;
&lt;br /&gt;
&lt;table width="200" cellspacing="1" cellpadding="1" border="1" align="" summary=""&gt;
    &lt;caption&gt;Mytableன் உள்ள தகவல்&lt;/caption&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;Sno&lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;charfield&lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;varcharfield&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;1&lt;/td&gt;
            &lt;td&gt;Tamil-----&lt;/td&gt;
            &lt;td&gt;Tamil&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;2&lt;/td&gt;
            &lt;td&gt;English---&lt;/td&gt;
            &lt;td&gt;English&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;3&lt;/td&gt;
            &lt;td&gt;Hindi-----&lt;/td&gt;
            &lt;td&gt;Hindi&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;4&lt;/td&gt;
            &lt;td&gt;Telugu----&lt;/td&gt;
            &lt;td&gt;Telugu&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
முதல் ரெக்கார்டின் நீளம் 5. char fieldல் மொத்தம் 10 இடங்கள் ஒவ்வொரு ரெக்கார்டுக்கும் ஒதுக்கப்படும். முதல் ரெக்கார்டின் நீளமான 5 இடங்கள் போக, மீதமுள்ள 10 இடங்களிலும் காலியான இடம் நிரப்பப்படும். இங்கு காலியான இடங்களைக் குறிக்க ஹைஃபன் (-) பயன்படுத்தி இருக்கிறேன். ஆனால், varchar fieldல் Tamil என்ற சொல்லுக்கு 5 இடங்கள் மட்டுமே எடுத்துக்கொள்ளப்படும். ஒதுக்கப்பட்ட மீதமுள்ள 5 இடங்களும் மிச்சம். தேவையான அளவுக்கு மெல் இடத்தை varchar எடுத்துக்கொள்ளாது. ஆயிரக்கணக்கான வரிசைகள் உள்ள ஒரு தகவல்தளத்தில், varchar மாறிலி நிறைய இடத்தை மிச்சப்படுத்தும்.&lt;br /&gt;
&lt;br /&gt;
வடிவமைக்கப்பட்ட டேபிளில் அதிகமான வரிசைகள்/ரெக்கார்ட்கள் nullஆக இருக்குமென்றால், varchar பயன்படுத்துவதுதான். நல்லது, ஏனெனில், char வகை field, எப்படியும் ஒதுக்கப்பட்ட இடத்தை எடுத்துக்கொள்ளும். varchar என்ன தேவையோ அதை மட்டுமே எடுத்துக்கொள்ளும்.&lt;br /&gt;
&lt;br /&gt;
பிறகு எதற்காக இந்த char?&lt;br /&gt;
&lt;br /&gt;
ஒரே முக்கியமான பதில், "வேகம்".&lt;br /&gt;
&lt;br /&gt;
ஒரு உதாரணம் பார்ப்போமா? வாருங்கள், நம்முடைய உதாரண டேபிளில் இரண்டாவது ரெக்கார்டை மூன்றாவதாகவும், மூன்றாவதாக இருந்த ஹிந்தியை இரண்டாவதுக்கும் மாற்றலாம், இப்படி:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table width="200" cellspacing="1" cellpadding="1" border="1" align="" summary=""&gt;
    &lt;caption&gt;மாற்றி அமைக்கப்பட்ட Mytableன் உள்ள தகவல்&lt;/caption&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;Sno&lt;br /&gt;
            &lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;charfield&lt;br /&gt;
            &lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;varcharfield&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;1&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;Tamil-----&lt;/td&gt;
            &lt;td&gt;Tamil&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;2&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;Hindi-----&lt;/td&gt;
            &lt;td&gt;Hindi&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;3&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;English---&lt;/td&gt;
            &lt;td&gt;English&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;4&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;Telugu----&lt;/td&gt;
            &lt;td&gt;Telugu&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
பார்ப்பதற்கு அதற்குப் பதிலாக இது என்று தெரிந்தாலும், உண்மை அது அல்ல. இரண்டாவது ரெக்கார்டை எடுத்துக்கொள்வோம். char fieldல் English என்ற எழுத்திற்கு பதில் Hindi என்று ஆகி இருக்கிறது. இரண்டு எழுத்துக்கள் கம்மி. அதனால் அந்த இரண்டு எடத்திலும் வெற்றிடம் நிரப்பப்பட்டு விட்டது. varcharfieldல் Englishக்குப் பதில் Hindi என்ற ஐந்து இடங்கள் மட்டுமே தேவைப்படுவதால், இன்னமும் இரண்டு எழுத்துக்களும் மிச்சம். variable character field இல்லையா, அதனால் இரண்டு இடங்கள் மிச்சம். முதலில் 7 இடங்கள் தேவைப்பட்டன, இனிமேல் 5 இடமே போதும். &lt;br /&gt;
&lt;br /&gt;
இது நன்று. ஆனால் அடுத்த ரெக்கார்டைப் பார்ப்போம். ஐந்து எழுத்து Hindiக்குப் பதில், ஏழு எழுத்து English. எப்படியும் இந்த charfieldக்கு 10 இடங்கள் உள்ளன. இனிமேல் 3 காலி இடம் போதும், ஒதுக்கப்பட்ட பத்தில் 7 இடங்களில் எழுத்துக்கள் இருக்கும். அடுத்ததாக varcharfieldக்கு வருவோம். இதில் ஏற்கனவே இருந்த Hindiக்கு 5 இடங்கள் இருந்தன. இப்பொழுது 7 எழுத்துக்களுக்கும் இடம் வேண்டும். என்ன செய்வது?&lt;br /&gt;
&lt;br /&gt;
Hindi என்ற எழுத்துக்களின் ஐந்து இடங்களை Engli என்ற எழுத்துக்கள் முதலில் நிரப்பும். இப்பொழுது shக்கு இரண்டு இடங்கள் வேண்டும். இனிமேல் புதிதாக இரண்டு இடங்களை உருவாக்க முடியாது. ஏனென்றால், முன்பு variable character fieldல் இருந்த Hindi ஆகிய ஐந்து எழுத்துக்கள் முடிந்ததுமே அடுத்த வரி ஆரம்பித்துவிட்டது. எனவே தனியாக ஒரு இடத்தில் இந்த sh சேமிக்கப்படும். பிறகு இந்த ரெக்கார்டுக்கான ஒரு ரெஃபரன்ஸ் தகவல்தளத்தில் உருவாக்கப்படும். இந்த ரெஃபரன்சின்படி, எப்பொழுதெல்லாம் இந்த மூன்றாவது வரி வினவலின் போது அனுப்பப்படுகிறதோ, அப்பொழுதெல்லாம் இந்த ரெஃபரன்சில் குறிப்பிடப்பட்டிருக்கும் இடத்தில் சேமிக்கப்பட்ட எழுத்துக்களையும் தகவல்தளம் தேடிப்பார்க்கும். ஒரு குத்துமதிப்பாக, கீழ்க்கண்டவாறு தகவல்தளத்தின் உள்ளே ரெக்கார்டுகள் இருப்பதாக வைத்துக்கொள்ளலாம்.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellspacing="1" cellpadding="1" border="1" align="" summary="" style="width: 200px; height: 134px;"&gt;
      &lt;caption&gt;varcharfield சேமிக்கப்பட்ட விதம்&lt;br /&gt;
    &lt;/caption&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-weight: bold;"&gt;Memory Address&lt;/span&gt;&lt;br /&gt;
            &lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;charfield&lt;br /&gt;
            &lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;varcharfield&lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;Reference&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place1 &lt;/td&gt;
            &lt;td&gt;Tamil-----&lt;/td&gt;
            &lt;td&gt;Tamil&lt;/td&gt;
            &lt;td&gt;&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place2&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;Hindi----- &lt;/td&gt;
            &lt;td&gt;Hindi&lt;/td&gt;
            &lt;td&gt;&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place3&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;English---&lt;/td&gt;
            &lt;td&gt;Engli&lt;/td&gt;
            &lt;td&gt;place5&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place4&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;Telugu&lt;/td&gt;
            &lt;td&gt;Telugu&lt;/td&gt;
            &lt;td&gt;&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place5&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
            &lt;td&gt;sh&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
                    &lt;br /&gt;
மூன்றாவது ரெக்கார்ட் இத்தனை நேரமும் place3  என்ற இடத்தில் மட்டுமே இருந்தது. ஆனால் Hindi-யை English என்று மாற்றியபிறகு, மூன்றாவது ரெக்கார்ட் place3 மற்றும் place5ன் தொகுப்பாக இருக்கிறது. இதோடு நிற்காது, ஒரு வேளை இந்த Englishஐ portugueseஎன்று மாற்றினால் விளைவு இன்னமும் மோசமாகும்:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table cellspacing="1" cellpadding="1" border="1" align="" summary="" style="width: 200px; height: 134px;"&gt;
      &lt;caption&gt;varcharfield சேமிக்கப்பட்ட விதம்&lt;br /&gt;
    &lt;/caption&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-weight: bold;"&gt;Memory Address&lt;/span&gt;&lt;br /&gt;
            &lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;charfield&lt;br /&gt;
            &lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;varcharfield&lt;br /&gt;
            &lt;br /&gt;
            &lt;/td&gt;
            &lt;td style="font-weight: bold;"&gt;Reference&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place1 &lt;/td&gt;
            &lt;td&gt;Tamil-----&lt;/td&gt;
            &lt;td&gt;Tamil&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place2&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;Hindi----- &lt;/td&gt;
            &lt;td&gt;Hindi&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place3&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;English---&lt;/td&gt;
            &lt;td&gt;portu&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;place5&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place4&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;Telugu&lt;/td&gt;
            &lt;td&gt;Telugu&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place5&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;gu&lt;br /&gt;
            &lt;/td&gt;
            &lt;td&gt;place6&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;place6&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
            &lt;td&gt;ese&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
                    &lt;br /&gt;
portuguese என்ற சரத்திற்கு 10 இடங்கள் வேண்டும். place3ல் ஐந்து இடங்களும் place5ல் இரண்டு இடங்களும் ஏற்கனவே இருக்கின்றன. இன்னமும் தேவைப்படும் மூன்று இடங்களுக்கு வேறு இடத்திற்குத்தான் போகவேண்டும். அந்த இடத்தை place6 என்று வைத்துக்கொள்வோம். எனவே இந்த reference ஒரு இடத்தில் இருக்கும். இப்பொழுது ஒரு வினவல் (query) எழுதுவோம்:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt; * &lt;span style="color: rgb(0, 0, 255);"&gt;from &lt;/span&gt;mytable &lt;span style="color: rgb(0, 0, 255);"&gt;where &lt;/span&gt;varcharfield='&lt;span style="color: rgb(255, 0, 0);"&gt;portugese&lt;/span&gt;'&lt;br /&gt;
&lt;br /&gt;
மேற்கண்ட வினவலுக்கு, மூன்றாவது ரெக்கார்ட் பொருந்தும். ஆனால் இதை பயனருக்குக் காண்பிக்க, முதலில் place3க்குச் சென்று அங்குள்ள portuவை எடுத்துக்கொள்ளவேண்டும். பிறகு place5க்குச் சென்று அங்குள்ள guவை இதனுடன் இணைக்கவேண்டும். அதன் பிறகு place6க்குச் சென்று அங்குள்ள eseயை portuguவுடன் இணைக்கவேண்டும். இதற்கு அதிக நேரம் தேவைப்படும்.&lt;br /&gt;
&lt;br /&gt;
இதுதான் varcharல் உள்ள ப்ரச்சனை. இதையே char வகை மாறிலியில் தேக்கியிருந்தால் எல்லா எழுத்துக்களும் ஒரே இடத்தில்தான் இருந்திருக்கும். அதனால் அங்கே இங்கே என்ற அலைச்சல் இல்லை. விரைவாக தகவல்கள் வந்துவிடும்.&lt;br /&gt;
&lt;br /&gt;
எனவே, அடிக்கடி அளவில் மாறும் தன்மையுடைய தகவல் என்றால், அப்படிப்பட்ட தகவலைச் சேமிக்க char மாறிலிதான் சிறந்தது. அதிக அடிக்கடி மாற்றங்கள் நிகழாது என்றால் அப்பொழுது varcharதான் சிறந்தது. இதனால் வன்தகட்டில்(hard disk) நிறைய இடமும் மிச்சமாகும்.&lt;br /&gt;
&lt;br /&gt;
சுருக்கமாகச் சொன்னால், கணிப்பொறி சேமிப்பு இடத்தைப் (storage) பற்றி கவலைகொள்ளத் தேவையில்லாதவர்கள் char மாறிலியையும், கணிப்பொறி நினைவிடத் (RAM) தேவையைப் பற்றி ப்ரச்சனை இல்லாதவர்கள் varchar மாறிலியையும் கொஞ்சம் தாராளமாகப் பயன்படுத்தலாம்.&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/28.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2007/05/24/28.aspx</guid>
            <pubDate>Wed, 23 May 2007 20:06:03 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/28.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2007/05/24/28.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/28.aspx</wfw:commentRss>
        </item>
        <item>
            <title>எஸ்.க்யூ.எல். சர்வர் ஒருமைப் பயனர் நிலை</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2006/07/14/SQL_Server_Single_User_Mode.aspx</link>
            <description>
		&lt;p&gt;டேட்டாபேசுடன் தனிமையில் ஆர அமர உட்கார்ந்து பேசவோ, ஒரேயடியாக அழிக்கவோ முயல நினைத்தால், சில நேரங்களில் இயலாமல் போகலாம். உதாரணத்திற்கு,&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;DROP DATABAES &lt;/font&gt;&amp;lt;dbname&amp;gt;&lt;br /&gt;&lt;br /&gt;என்ற வினவலுக்கு &lt;br /&gt;&lt;font color="#ff0000"&gt;&lt;br /&gt;Cannot drop the database &lt;font color="#000000"&gt;&amp;lt;dbname&amp;gt;&lt;/font&gt; because it is currently in use&lt;/font&gt;.&lt;br /&gt;&lt;br /&gt;என்ற பிழைச்செய்தி வரலாம்.&lt;/p&gt;
		&lt;p&gt;இப்படிப்பட்ட நேரங்களில் நாம் எண்ணியதை முடிக்க ஒரே வழி, தகவல் தளக்கோப்புக்கும் வெளி உலகுக்குமான தொடர்பை ஒட்டுமொத்தமாகத் துண்டிப்பதுதான்.&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#0000ff"&gt;ALTER DATABASE &lt;font color="#000000"&gt;&amp;lt;dbname&amp;gt;&lt;/font&gt; SET SINGLE_USER&lt;/font&gt;
		&lt;/p&gt;
		&lt;p&gt;என்று வினவல் இதற்கு பயன்படும். அந்த கணத்தில் தொடர்பில் இருக்கும் பயனர்கள் தத்தமது நிலுவையில் இருக்கும் செயல்களை முடித்துக்கொண்ட பிறகு, &amp;lt;dbname&amp;gt; என்ற பெயருடைய டேட்டாபேஸ் ஒருமைப் பயனர் நிலைக்கு வந்துவிடும். ஒரு வலைத்தளம் அல்லது பலர் பயன்படுத்தும் மென்பொருளுக்கான தகவல்தளத்திற்கு இந்த வினவலே சரியாக இருக்கும்.&lt;/p&gt;
		&lt;p&gt;என்ன ஆனாலும் சரி, டேட்டாபேசை அழித்தே தீருவது என்ற முடிவுக்கு வந்துவிட்டால்,&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#0000ff"&gt;ALTER DATABASE &lt;/font&gt;
				&lt;font color="#000000"&gt;&amp;lt;dbname&amp;gt;&lt;/font&gt;
				&lt;font color="#0000ff"&gt;SET SINGLE_USER&lt;/font&gt;
				&lt;font color="#0000ff"&gt;WITH ROLLBACK &lt;/font&gt;immediate&lt;/p&gt;
		&lt;p&gt;என்று வினவினால் போதும். அந்த நொடியே எல்லா பயனருடைய தொடர்பும் துண்டிக்கப்பட்டுவிடும். பிறகு drop database &amp;lt;dbname&amp;gt; என்று கொடுத்துக்கொள்ளலாம்.&lt;/p&gt;
		&lt;p&gt;சில நேரங்களில் விட்டுப்பிடிக்க வேண்டிய நிலை வரலாம். 'இந்தாப்பா, இவ்வளவு நேரம் தரேன். அதுக்குள்ள மேட்டர முடிச்சுட்டு எடத்த காலி பண்ணு' என்று சொல்ல நினைத்தால் &lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#0000ff"&gt;ALTER DATABASE &lt;/font&gt;
				&lt;font color="#000000"&gt;&amp;lt;dbname&amp;gt;&lt;/font&gt;
				&lt;font color="#0000ff"&gt;SET SINGLE_USER&lt;/font&gt;
				&lt;font color="#0000ff"&gt;WITH ROLLBACK AFTER&lt;/font&gt; 300&lt;/p&gt;
		&lt;p&gt;என்று கொடுக்கலாம். AFTER என்ற சொல்லுக்குப் பிறகு வரும் எண், மணித்துளிகளைக் குறிக்கும். ஐந்து நிமிடங்களுக்குப் பிறகு எல்லா தொடர்புகளும் துண்டிக்கப்படும். alter database வினவலைக் கொடுத்தவரின் கட்டுப்பாட்டுக்குள் தகவல்தளக்கோப்பு வந்துவிடும்.&lt;/p&gt;
		&lt;p&gt;திரும்பவும் multi user நிலைக்கு மாற்றுவதும் எளிமையானதுதான்.&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#0000ff"&gt;ALTER DATABASE &lt;/font&gt;
				&lt;font color="#000000"&gt;&amp;lt;dbname&amp;gt;&lt;/font&gt;
				&lt;font color="#0000ff"&gt;SET MULTI_USER&lt;/font&gt; என்று கொடுத்தால் திரும்பவும் பன்மைப் பயனர் நிலைக்கு வந்துவிடும்.&lt;/p&gt;
&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/10.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2006/07/14/SQL_Server_Single_User_Mode.aspx</guid>
            <pubDate>Fri, 14 Jul 2006 08:02:40 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/10.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2006/07/14/SQL_Server_Single_User_Mode.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/10.aspx</wfw:commentRss>
        </item>
        <item>
            <title>எஸ்.க்யூ.எல். சர்வர் தொடங்க மறுக்கிறதா?</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2006/07/12/SQL_Server_starting_problem.aspx</link>
            <description>
		&lt;p&gt;இன்று காலை நான் பணியகம் வந்ததும் ஒரு மென்பொருள் இயங்க மறுத்து சண்டித்தனம் செய்தது. மென்பொருளின் log file பார்த்ததும் SQL Server ப்ரச்சனை என்று புரிந்தது.&lt;/p&gt;
		&lt;p&gt;கடைசியில் பார்த்தால், அட ஆமாம். SQL Server அமைதியாக உறங்கிக் கொண்டிருந்தது. Administrative Tools-&amp;gt;Services சென்று start பண்ணினால்&lt;/p&gt;
		&lt;p&gt;The MSSQLSERVER service on Local Computer started and then stopped. Som eservices stop automatically if they have no work to do, for example, the Performance Logs and Alerts service.&lt;/p&gt;
		&lt;p&gt;என்று ஒரே ஒரு தகவல்பெட்டி மட்டும் காண்பித்துவிட்டு மடக்கென்று படுத்துவிட்டது.&lt;/p&gt;
		&lt;p&gt;அப்புறமென்ன, Event Log தான் ஒரே வழி. நேரே Event viewer-&amp;gt;Applicationக்கு ஒரு சுற்றுப்பயணம் மேற்கொண்டு பார்க்கும்படியான நிலமை. அங்கே ஒரு விஷயம் கிடைத்தது. ஒரு error log. &lt;/p&gt;
		&lt;p&gt;
				&lt;br /&gt;17204 :&lt;br /&gt;FCB::Open failed: Could not open device C:\Program Files\Microsoft SQL Server\MSSQL\Data\&amp;lt;dbname&amp;gt;_Log.LDF for virtual device number (VDN) 2.&lt;/p&gt;
		&lt;p&gt;இந்த பிழைச்செய்தி master databaseக்கு வந்தால் SQL Server start ஆகாது. ஆனால் &amp;lt;dbname&amp;gt;ஓ ஒரு சாதாரண மென்பொருளுக்கான கோப்பு. சரி என்று கொஞ்சம் googleஐ நாடி சிலப்பல காரியங்களைச் செய்து பார்த்தும் ஒன்றும் கதைக்கே ஆகவில்லை. mdf file read-only ஆட்ரிப்யூட்டில் இல்லை. ldfஉம் சரியாகத்தான் இருக்கிறது. வேறு எந்த மென்பொருளும் இந்த கோப்புகளைப் பயன்படுத்திக்கொண்டிருக்கவில்லை.&lt;/p&gt;
		&lt;p&gt;கடைசியாக ஒரு யோசனை தோன்றியது. command prompt திறந்து, SQL Server நிறுவிய அடைவு(directory)க்குள் சென்று, binn\sqlservr.exe கோப்பை அழைத்தேன். SQL Server Windows Serviceக்கான இயங்குக்கோப்பு இது. பிறகு விடை கிடைத்தது:&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#ff0000"&gt;SQL Server evaluation period has expired.&lt;/font&gt;
		&lt;/p&gt;
		&lt;p&gt;என்ற செய்தியைக் காண்பித்துவிட்டு இயக்கத்தை முடித்துக்கொண்டுவிட்டது sqlservr.exe. &lt;/p&gt;
		&lt;p&gt;ஆக, ப்ரச்சனை டேட்டாபேஸ் கோப்பு இல்லை.&lt;/p&gt;
		&lt;p&gt;என் கணினியில் testing team நண்பர் ஒருவர் தேதியைப் பல வருடங்கள் மாற்றி வைத்து நேற்று ஒரு மென்பொருளைச் சோதனை செய்து கொண்டிருந்தார். இன்று காலை கணிப்பொறி இயக்கப்பட்டவுடன், பழைய தேதியைப் பார்த்து SQL Server தொடங்க மறுத்துவிட்டது. பிறகு சரியான தேதிக்கு system clock-ஐ மாற்றி வைத்ததும், சமர்த்தாக SQL Serverஉம் இயங்க ஆரம்பித்துவிட்டது. ஒழுங்காக MSDEயையும் நிறுவிக்கொள்ள வேண்டும்.&lt;/p&gt;
&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/8.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2006/07/12/SQL_Server_starting_problem.aspx</guid>
            <pubDate>Wed, 12 Jul 2006 10:14:02 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/8.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2006/07/12/SQL_Server_starting_problem.aspx#feedback</comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/8.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>