January 08, 2013 ·

Facebook Graph API calls for facebook integration

FACEBOOK the world of it's own,But it sounds good if you get its power in your site,Photos,Status,Like,Commenting,Facebook albums, In short you can simply go and create your app which does everything for you without even going on to facebook

Facebook has its very superb API which you can find on developer.facebook.com, You can download full binaries to be coded in C# but i will skip that and put that on readers to explore as and when you have time,Lets talk something short and sweet

Facebook Page
Here i am only going to talk about the get API calls,That means only things which only get the data from any public page,Say you have a page on facebook for your business and you want the data from your facebook page to be shown onto your website,You can use these calls,Fast,Easy and Fun,Lets get started

Say i have a photography page on my facebook or any other page,You can get its photo albums and its photos by following code,Some of the things required to make a call are following

  • Unique Id or name of the facebook page
  • Facebook Graph API url on which you will make a http request and wait for the response
  • Each call are different (i.e photos,albums etc,Depending on your requirement) so proper URL of those calles

The Calls
Lets say i want to get the basic details of my FB page,like it's description,cover photo,profile pic,so following is the url you would be using

NOTE: Here i am using my photography page to show,You can replace the page name with yours

Get the FACEBOOK page basic info
https://graph.facebook.com/147326062077207

Try hitting above url into browser and you will get an idea what you would be doing,As it returns well formed JSON string and you will make use of that JSON and display the things
Get the list of photo albums on your page
https://graph.facebook.com/147326062077207/albums

Get list of photos into specific album

From above url you will get list of albums with their album id,and in below url you will pass that album id to get photos inside it

https://graph.facebook.com/153930304750116/photos
Getting album cover photo to show

From above url you will get list of photos for particular album,and if you see its JSON string,The 'picture' property is thumbnail preview of the cover photo, So you can take that 'picture' property and show that image from FACEBOOK's CDN.

There are many other useful properties and functions with GET and POST request,I will be covering them in next blog post, Enjoy playing with it,And do provide feedback !!!

October 22, 2012 ·

Importance of flushing memory

As we know in our day to day life how important 'Flush' is :),But that teaches us same thing in our programming life as well

Let me share a scenario where i faced the issue,In our day to day life of deadlines,Sometimes we forget to write the code which is actually needed there,You achieved the best with your code but you do not achieve the better sometimes

The Scenario :

I before few days created export to CSV and export functionality of my one of the list (Grid),It was importing the data very well,But on the close examination of data i found out that its inconsistent data,At some point of time it stopped writing the data and from that point onward there were no data in exported file.

Following is the code.


HSSFRow row = wsheet.GetRow(i);
for (short j = 0; j < row.LastCellNum; j++)
{

     HSSFCell cell = row.GetCell(j);
     string strValue = string.Format("\"{0}\",",   Convert.ToString(cell.RichStringCellValue.String));
       StreamWriter.Write(strValue);
       
 

}
StreamWriter.WriteLine();
StreamWriter.Flush();

If you see above code you do not find any issue,Same happened with me,I tried debugging it over and over,logging the operation but surprising thing was in log each and everything was coming,And i end up finding the issue was below

Issue The mistake i did was i was not clearing our StreamWriter from memory by flushing the memory and hence it was creating issue,One single statement introduced and woooo...issue got resolved like below


HSSFRow row = wsheet.GetRow(i);
for (short j = 0; j < row.LastCellNum; j++)
{

     HSSFCell cell = row.GetCell(j);
     string strValue = string.Format("\"{0}\",",   Convert.ToString(cell.RichStringCellValue.String));
       StreamWriter.Write(strValue);
       StreamWriter.Flush();
 

}
StreamWriter.WriteLine();
StreamWriter.Flush();

Everything started working as it should be,Simple but very important to follow the theories.

September 26, 2012 ·

An error occurred while receiving the HTTP response to This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.

You have noticed many times that everything was working fine and suddenly the below error starts coming and you find no way to work it out An error occurred while receiving the HTTP response to This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.

The reason for this is the receiving size of WCF service is smaller then the data which is coming from service It was working before because it was small,So you will have to try to increase the receiving setting in your end point,Possible settings can be following

maxStringContentLength="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"
maxArrayLength="2147483647"

That would definately help you!!!

September 18, 2012 ·

Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a runtime error

Or any file which fires this error,it may be any dll you are using in project

Today fine morning,i opened my old project which is live and needed to change something and upload,but as soon as i tried to run,It fired above error,and i was wondering everything was working fine and what has happened now? But i think our human body sometimes stops working without warning and this is just a code so there may be something wrong with it and i tried figuring it out and below is the story and conclusion

I got one of the targeted solution on below link http://live.mscommunity.net/blogs/damirdobric/archive/2011/03/18/cannot-start-wcf-web-service-because-of-aspnetadapter-failure.aspx

It basically deals with 32bit and 64 bit versions and i end up putting following lines in web.config file

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
        <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.Resource" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <codeBase version="10.0.0.0" href="file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.QualityTools.Resource/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.QualityTools.Resource.dll" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <codeBase version="10.0.0.0" href="file:///C:/Program%20Files/Microsoft%20Visual%20Studio%2010.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter.DLL" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.Common" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <codeBase version="10.0.0.0" href="file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.QualityTools.Common/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.QualityTools.Common.dll" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.ExecutionCommon" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <codeBase version="10.0.0.0" href="file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.QualityTools.ExecutionCommon/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll" />
      </dependentAssembly>
  </assemblyBinding>
</runtime>

Ssy you have UI project,Web services,content delivery etc projects,If you are using hosting in IIS and your project is directly referencing that virtual directory,That means you will end up inserting above lines in all the projects web.config file

Just restart the IIS and try to run your project,It will work now !!!

April 17, 2012 ·

DateTime format and decimal or currency issue resoved using Custom model binders in MVC

Hi all,

You can't keep yourself away from writing blog when you have faced an issue while development and you tried to solve it and finally you come across something interesting which finally resolved the issue

Today's post is regarding the scenario which we face in day to day life (But i faced it for the first time today) where i had multilingual application running on telerik controls

One of the page had DateTimePicker,We have "da-DK" (Danish) clients,When tried to save Date from one page,The page kept on giving error message "DateTime format is not valid" for this field (Typical MVC datetime validation error messgae)

So scenario was in UI everything was coming as per culture,If i select date from DatePicker it was returning correct format,But still couldn't figure out what was wrong

So let me cut the story short and tell you,Model binder was the key to success

The code looks like following

public class DateTimeModelBinder : IModelBinder
{
  public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
  {
            ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
            ModelState modelState = new ModelState { Value = valueResult };
            object actualValue = null;
            try
            {
                string culture = Convert.ToString(HttpContext.Current.Session["culture"]);
                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
                actualValue = Convert.ToDateTime(valueResult.AttemptedValue, Thread.CurrentThread.CurrentCulture);
            }
            catch (FormatException e)
            {
                modelState.Errors.Add(e);
            }

            bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
            return actualValue;
  }
}

Above is simple class created under folder "Helper",Now what it does is it tells compiler that which format the date should be parsed so that its valid on server

Now,We are not done yet,We need to register this binders in global.asax file on Application_Start so that at runtime this class gets called and later on can parse the date as per culture,Which is like below

protected void Application_Start()
{
     AreaRegistration.RegisterAllAreas();
     RegisterGlobalFilters(GlobalFilters.Filters);
     RegisterRoutes(RouteTable.Routes);
           
      ModelBinders.Binders.Add(typeof(DateTime), new DateTimeModelBinder());
     WebAssetDefaultSettings.UseTelerikContentDeliveryNetwork = true;
}


Now,Try to submit the date which previously you were trying to in different culture and all will work,Same applies for currency,You can use Convert.Deciaml() instead of Convert.DateTime

Cheers!!!

January 05, 2012 ·

telerik multiple window bug

Many of you (just like me) might have came across the multiple telerik window bug which is just as annoying as it can get

Scenario : In my case i had two telerik window which were opening from the same grid,one was inbuilt window for editing the record (GridEditMode.PopUp) and the other one was opening from one hyperlink inside the same grid

Here i had used the same model for both the partial controls which were loading inside window,so the control's generated html contained id same as property name of strongly model

So now when i was opening first window it came loaded with all controls and my partial control,now i opened second window as well,everything worked fine till now.

Now if you people might have observed that when you close the telerik window,It does not clear the content which you rendered inside it,so window was closed but the html inside remained as it is.

Now problem occurs now if i try to open the default edit pop up window for telerik grid it tries to render the html and now we have used the same model here so it gets same "Id" for the controls inside (as out previous window which we closed already has same content in it),and hence it does not know what to do and fires an error

So we always wonder,It was working when i first opened it but now when i opened it for the second time,It does not work and we run out of ideas what to do

Below is the solution for the same,It might help you solve the issue for your telerik multiple window

Solution : Just clear the content of the window in OnClose event like following,Write a client side event for window which calls below function

function OnClose()
{
   // MyWindow is id of my window
   $('#MyWindow').html('');
}

This is simple but it avoids many issues and saves time

Cheers !!!

February 28, 2011 ·

Telerik Mvc Combobox large data loading issue on AutoCompleteFilterMode

Hi all

Its been long break...Here i am back with little out of box solution which is not available on internet,i did the solution and felt to share it with you all so that you people do not face the issues which i faced while working with telerik mvc combobox

As we know (People who use telerik mvc combobox) that when telerik mvc combobox is used and there is huge data to be loaded from controls action method, and if AutoCompleteFilterMode is on,the combo simply hangs in IE and traditional IE error will come up saying "SCRIPT IS RUNNING INFINITE,DO YOU WANT TO STOP THE SCRIPT", and will just kill the browser

So, let us cut the story short and come up directly on solution,say you are having following combobox code

<%: Html.Telerik().ComboBoxFor(model => modelfooId)
.AutoFill(true)
.BindTo(new SelectList(Model.fooList, "Value", "Text", Model.fooId))
.HtmlAttributes(new {style = "width:400px"})
.Filterable(filtering => filtering.FilterMode(AutoCompleteFilterMode.StartsWith))
.ClientEvents(c => c.OnChange("MakeSelection").OnClose("MakeSelection"))
.HighlightFirstMatch(true)
%>

you can observe the client event registered,which is actual hack for the solution,now those javascript function is as simple as that like following

function MakeSelection(e) {
    $('.t-animation-container').hide();
}

Now, try refreshing your page and try selecting any of the options, it will not hang and will run as you want

Its like magic,"Its misty until you know the trick behind"...

let me know your feedback...
Translate my page with google translate

August 31, 2010 ·

Translate my page with google translate

As we all know the world is getting multilingual,in our daily lives, specially on internet we find the things which are in another language and we need a way to translate it into the language we understand

As we all know about Google Translate is the place we all will go and paste the content that we want to translate,but what if we have power of that tool into our website or web page,yes it is possible with GOOGLE TRANSLATE (which is able to translate the page into more than 50 languages) to have that integrated into your own website,today we will see how with example



This tool is available from quite sometimes now,but the point is very less of the people from developer community are aware of this,so the reason behind this post is to show how any developer can make use of it and make it so simple to translate their pages...


The process...


The only need to have the power of translation on your website is copy and paste snippet of following code into your web page

<div id="google_translate_element">
</div>
<script>
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'en'
}, 'google_translate_element');
}
</script>
<script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit">
</script>

Just put above snippet in your HTML mark up and run the page,you will get standard google translator logo as well as few options which we are interested in right now,see the image below




now you have the full control over language change,just select the language from available languages and see how google translate it for you

What if i do not want to translate some of the content???
Now question comes is what if there are certain portion which you do not want to translate and you want to keep it as it is,so that fix is also there,say there is copyright text or email address which you want to keep as it is,so you just have to add one CSS class to it and gogle will take care of it like following

Contact us at <span class="notranslate">daivagnas@gmail.com</span>

Now if you do not want to translate whole page so just add following

<meta name="google" value="notranslate"></meta>

I was quite amazed with the power which google provides,i hope you also do...i hope this post was useful


To see live demo just have a look at the gadget on this page at top-right-most corner
Delete duplicate records from table even when there is no key field

August 13, 2010 ·

Delete duplicate records from table even when there is no key field

Hi all,yesterday only i was discussing with my colleague Kamlesh Samnani who is MCTS about deleting records which does not have any primary key field based on which we can delete the data (actually he only fired this question yesterday to me)

so i thought to write a blog post about it,there are many posts which talk about deleting duplicate records from the table which has some key field,so i started working on the query and what i got is what i am gonna write here.

Lets start creating the table and after inserting some data in it,we will fire our query in that and will check the output as well

CREATE TABLE [dbo].[Employee](
[EmployeeId] [int] NULL,
[Salary] [money] NULL
) ON [PRIMARY]

INSERT INTO Employee VALUES(1,1000)
INSERT INTO Employee VALUES(1,2000)
INSERT INTO Employee VALUES(1,3000)
INSERT INTO Employee VALUES(2,2000)
INSERT INTO Employee VALUES(3,3000)
INSERT INTO Employee VALUES(3,4000)
INSERT INTO Employee VALUES(4,4000)
INSERT INTO Employee VALUES(4,5000)


after creating table and inserting some data table will look like following



Now we will try solving the problem using two method,first one is using simple query which is quite interesting (It was new for me when i created this query and performed) and second approach is using CTE (Common Table Expression)

1) Using Simple Query with Row_Number()

DELETE temp FROM
  (
      SELECT id FROM
      (
        SELECT row_number() over (PARTITION BY EmployeeId order by EmployeeId) AS   
        id, EmployeeId,Salary 
        FROM Employee
      ) AS t WHERE id > 1
   ) temp
   SELECT * FROM Employee

Here what row_number() will do is will create numbers for each of the row,now we have PARTITION BY EmployeeId so it will reset the number when EmployeeId changes,so on every new EmployeeId there will be number generated from 1,so we can directly delete data which are > 1,because they are duplicate,now in case if we do not have any duplicate record this row_number() will generated only once and it will never be reset,so in that case no records would be having same number generated

2) Using CTE

;WITH temp (uniquid,id,salary) AS 
 (
    SELECT row_number() OVER (PARTITION BY EmployeeId order by EmployeeId) AS id, 
    EmployeeId,Salary 
    FROM Employee
 )
 DELETE FROM temp WHERE uniquid>1
 SELECT * FROM Employee

Output




Both of the query will produce the desire output and will delete the duplicate records

I hope this is interesting one right,honestly i was not knowing until i performed it my self yesterday,so you can also hands on...

August 11, 2010 ·

Roll back truncate command

How many times it has happened that somebody asks u a difference of Truncate and Delete,Atleast i am the person who used to say the very first point is that "TRUNCATE CAN NOT BE ROLLED BACK" untill i came across the blog post of Pinal Dave

So,the best way to understand any point is start with sample,here what we will do is we will create one table and we will create one transaction and under which we will be doing our truncate thing...and finally we will observe the result

Lets us start it by creating sample table and our transaction like following as shown below


CREATE TABLE temp (Name varchar(50))
INSERT INTO temp SELECT 'Moe'
INSERT INTO temp SELECT 'Larry'
INSERT INTO temp SELECT 'Curley'


BEGIN TRAN
   SELECT * FROM temp
   TRUNCATE TABLE temp
   SELECT * FROM temp
ROLLBACK TRAN
   SELECT * FROM temp
   
DROP TABLE temp


Now if you just copy and paste this above in your query editor and hit F5 (RUN),you would be surprise to see that even if you have performed TRUNCATE operation on your table,your data are still available at the end of transaction if we ROLLBACK

I was also got the feeling of learning something new with this helpful post by Pinal,which inspired me to write this post,so that we can use it for further reference

i hope this post is larning for you people as well

comments are welcomed...:-D

June 06, 2008 ·

ENABLING GZIP FOR FASTER DOWNLOAD

ENABLING GZIP FOR FASTER DOWNLOAD OF WEB PAGE.


Zombi note :The HTTP/1.1 protocol allows for clients to optionally request the compression of content from the server. The standard itself specifies two compression methods: “gzip” and “deflate” Both are supported by many HTTP client libraries and almost all modern browsers.


Enabling gzip at IIS Manager
At IIS Manager (inetmgr.exe) open Web Sites Properties, at Service tab mark Compress application files & Compress static files.
Zombie note :You need to right click the web sites rather than going into specific site and click properties of perticlar website.

Now you need to edit one xml file as below
c:\WINDOWS\system32\inetsrv\MetaBase.xml file.




Zombie note : Before Editing Metabase.xml file stop IIS Services or enable Direct Metabase Edit at Web by going into the peroperties and WEB02 dialog box will appear and check mark the “ENABLE DIRECT METABASE EDIT.”

Edit Metabase.xml with text editor and locate the following lines:
HcFileExtensions
HcScriptFileExtensions
Both of thes keys are mentiond twice in Metabase.xml, for gzip ompression and deflate compression, add the file extention fo gzip compression.

FOLLING SHOWS HOW IT WILL LOOK LIKE

IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="0"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="FALSE"
HcDynamicCompressionLevel="0"
HcFileExtensions="htm
html
txt
xml
css
js"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe
aspx
php"
>

HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="0"
HcFileExtensions="htm
html
txt
xml
css
js"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe
aspx
php"
>



To enable or disable gzip per web site
cscript C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/site#/root/DoStaticCompression False
cscript C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/site#/root/DoDynamicCompression False
adding file extention to be compressed can be preformed with this command:
cscript C:\Inetpub\AdminScripts\adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcFileExtensions "htm" "txt" "doc"


CHHERS…NOW TRY TO BROWSE YOUR SITE AND VOOOIIILLLAAAA,IT IS FASTER THAN BEFORE….ENJOYYYYY

June 05, 2008 ·

Sql questions

1) How to remove duplicate records from a table?

delete from tmp where rowid not in(select max(rowid) from tmp group by tmpno)

2) How will you copy the structure of a table without...

a)Without Data : select * into temp2 from temp where 1=2
b)With Data : select * into temp2 from temp
c) SELECT TOP 0 * INTO Test1 FROM Test


3) RE: how many column maximum we can add in one table a...

The column length is dependent up on the type of statement we are using:
It will be 4,096 for select statement 1024 for insert statement.
The number of foreighn key maximum we can use in a table is 16 and we can link with 253 tables.

4) What is the difference among "dropping a table" and "truncate"

Dropping table the structure of table as will as row of table .
but truncate table delete all the row of table but structure of table remain same we can apply where condition on it . delete work like truncate the table but we can apply where condition on it. Truncate can't roll back delete can.we can have condition with delete but with truncate we cant have condition

5) Difference between a "where" clause and a "having"...

1. Having clause is usually used with Group By clause although it can be used without it too.
2. 'Having' is just an additional filter to 'Where' clause.
3. 'Where' clause applies to the individual rows whereas 'Having' clause is used to test some condition on the group(usually aggregate methods) rather than on individual rows.

6) What is DESCRIBE command in SQL Server?What is its...
Suppose if u want to get the structure of table categories
use the following command in sql server
sp_columns categories
This will work.. Like wise if u want to see the list of tables in ur database, use
sp_tables

7) Difference between "VARCHAR" and "VARCHAR2" dataty...

Both are related to varible length but difference that varchar stores only 2000 byte character of data and varchar2 stores 4000 byte charecter of data .
The other difference is that, varchar occupy total length which is define to create database while the varchar2 occupy the total length of the given string.

8) What is #table and ## table in sql server ?

#table in SQL Server :
This # symbol prefixed with the tablename indicates that it is a local temporary table. This table will be existing till the session exists. Once the session expires the table will be dropped automatically. The table that is created with # symbol prefixed is temporary, so we can't give foreign key constraints to that table. Rest all the features are similar to that of the table that is permanent.
create table #Employee(EmpId int,EmpName Varchar(20))
##table in SQL Server:
This ## symbol prefixed with the tablename indicates that it is a Global Temporary table.This particular temporary table can be used by all the connections of SQL server and the temporary table is made available for all the users to access it.
The Temporary table can be mostly used for 'Select into' statements

9) How do you change column names in SQL Server ?

EXEC sp_rename 'Table.[OldColumnName]', NewColumnName, 'COLUMN'

10) Explain Normalization and Denormalization with exa...

Normalization is done to reduce redundancy and Specifies the fields and the primary key Normalization analyzes record structure through four stages
First normal form (1NF) records
Second normal form (2NF) records
Third normal form (3NF) records
Normalization

First normal form
Unnormalized records contain a repeating group
A repeating group refers to a single record that has multiple values in a particular field
Example: multiple product numbers in a single order record
A 1NF record cannot have a repeating group
Normalization

First normal form
To convert an unnormalized record to 1NF, the repeating group must be removed
Expand the primary key to include the primary key of the repeating group
The new primary key is a combination of the original primary key and the key of the repeating group
Instead of a single record with a repeating group, the result is many records, one for each instance of the repeating group
Normalization

Second normal form (2NF)
To be in second normal form, a record must be in 1 NF, and all nonkey fields must be functionally dependent on the entire primary key - not just part of it
Functional dependency means that a value in one field determines a value in another field
If the primary key is a single field, then any record in 1 NF is automatically in 2 NF
In 2NF, all nonkey fields are functionally dependent on the entire primary key
Normalization

Second normal form (2NF)
To convert a 1NF record to 2NF
Create a new record design for each field (or combination of fields) in the primary key
Place remaining fields with the appropriate record
The result will be several records, each with a primary key field (or combination of fields) that determines the values of the other fields in that record
Normalization

Third normal form (3NF)
To be in 3NF, a record must be in 2NF and no nonkey field is functionally dependent on another nonkey field
In 3NF, all nonkey fields are functionally dependent on the primary key, the entire key, and nothing but the key
Normalization

Third normal form (3NF)
To convert a 2NF record to 3NF
Remove all nonkey fields that depend on another nonkey field and place them in a new record that has the determining field as a primary key

11) RE: Are there any Commands, can be used to calculate the performance of a Querry?
set showplan on
set showplan_text on
set statistics io on
set statistics time on

12) what is fill factor, where it can be used?

When we create clustered index the data in the table is stored in the data pages of the database according to the order of the values in the indexed is known as fill factor.

13)What is the use of database index (apart from fast...

Indexes are useful for maintaining unique values in a column, since the database can easily search the index to see if an incoming value already exists. Primary keys are always indexed for this reason.
By default Primary keys will create Clustered Index(where tipical values are stored in Leaf level),
UNIQUE will create Non Clustred Index(where the references of the values are stored)
Since index entries are stored in sorted order, indexes also help when processing ORDER BY clauses.

14) What is RDBMS?
Relational Data Base Management Systems (RDBMS) are database management systems that maintain data records and indices in tables. Relationships may be created and maintained across and among the data and tables. In a relational database, relationships between data items are expressed by means of tables. Interdependencies among these tables are expressed by data values rather than by pointers. This allows a high degree of data independence. An RDBMS has the capability to recombine the data items from different files, providing powerful tools for data usage.,inshort which follows the coods rule(12 rules of database)

15) What is the difference between clustered and a non-clustered index?
A clustered index is a special type of index that reorders the way records in the table are physically stored. Therefore table can have only one clustered index. The leaf nodes of a clustered index contain the data pages.
A nonclustered index is a special type of index in which the logical order of the index does not match the physical stored order of the rows on disk. The leaf node of a nonclustered index does not consist of the data pages. Instead, the leaf nodes contain index rows.

16) What’s the difference between a primary key and a unique key?
Both primary key and unique enforce uniqueness of the column on which they are defined. But by default primary key creates a clustered index on the column, where are unique creates a nonclustered index by default. Another major difference is that, primary key doesn’t allow NULLs, but unique key allows one NULL only.

17) Can a stored procedure call itself or recursive stored procedure? How many level SP nesting possible?
Yes. Because Transact-SQL supports recursion, you can write stored procedures that call themselves. Recursion can be defined as a method of problem solving wherein the solution is arrived at by repetitively applying it to subsets of the problem. A common application of recursive logic is to perform numeric computations that lend themselves to repetitive evaluation by the same processing steps. Stored procedures are nested when one stored procedure calls another or executes managed code by referencing a CLR routine, type, or aggregate. You can nest stored procedures and managed code references up to 32 levels.

18) What is @@ERROR?
The @@ERROR automatic variable returns the error code of the last Transact-SQL statement. If there was no error, @@ERROR returns zero. Because @@ERROR is reset after each Transact-SQL statement, it must be saved to a variable if it is needed to process it further after checking it.19) What is a table called, if it does not have neither Cluster nor Non-cluster Index? What is it used for?
Unindexed table or Heap. Microsoft Press Books and Book On Line (BOL) refers it as Heap.
A heap is a table that does not have a clustered index and, therefore, the pages are not linked by pointers. The IAM pages are the only structures that link the pages in a table together.
Unindexed tables are good for fast storing of data. Many times it is better to drop all indexes from table and than do bulk of inserts and to restore those indexes after that

19)What is Cross Join?
A cross join that does not have a WHERE clause produces the Cartesian product of the tables involved in the join. The size of a Cartesian product result set is the number of rows in the first table multiplied by the number of rows in the second table. The common example is when company wants to combine each product with a pricing table to analyze each product at each price.