Steph Boogie »

↔↔FOR GΣΣKS ONLY↔↔

Get Microsoft Silverlight





Why Use SQL Over procedural?

Structured Query Language (SQL) is a set-based language as opposed to a procedural language. It is the defacto language of relational databases.
The difference between a set-based language vs. a procedural language is that in a set-based language you define what set of data you want or want to operate on and the atomic operation to apply to each element of the set. You leave it up to the Database process to decide how best to collect that data and apply your operations. In a procedural language, you basically map out step by step loop by loop how you collect and update that data.

There are two main reasons why SQL is often better to use than procedural code.
  • It is often much shorter to write - you can do an update or summary procedure in one line of code that would take you several lines of procedural.
  • For set-based problems - SQL is much faster processor-wise and IO wise too because all the underlining looping iteration is delegated to a database server process that does it in a very low level way and uses IO/processor more efficiently and knows the current state of the data - e.g. what other processes are asking for the data.

Example SQL vs. Procedural

If you were to update say a sales person of all customers in a particular region - your procedural way would look something like this
do until eof
    if rs("state") = "NH" then
        rs("salesperson") = "Mike"
    end if
    rs.next
loop


The SQL way would be: 
UPDATE customers SET salesperson = "Mike" WHERE state = "NH" 

If you had say 2 or 3 tables you need to check, your procedural quickly becomes difficult to manage as you pile on nested loop after loop.

In this article we will provide some common data questions and processes that SQL is well suited for and SQL solutions to these tasks. Most of these examples are fairly standard ANSI-SQL so should work on most relational databases such as IBM DBII, PostGreSQL, MySQL, 
Microsoft SQL Server, Oracle, Microsoft Access, SQLite with little change. Some examples involving subselects or complex joins or the more complex updates involving 2 or more tables may not work in less advanced relational databases such as MySQL, MSAccess or SQLite. These examples are most useful for people already familiar with SQL. We will not go into any detail about how these work and why they work, but leave it up to the reader as an intellectual exercise.

List all records from one table that are in another table

What customers have bought from us?
SELECT DISTINCT customers.customer_id, customers.customer_name
FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id

What items are in one table that are not in another table?

Example: What customers have never ordered anything from us?
SELECT customers.* FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id WHERE orders.customer_id IS NULL 
More advanced example using a complex join: What customers have not ordered anything from us in the year 2004 - this one may not work in some lower relational databases (may have to use an IN clause)
SELECT customers.* FROM customers LEFT JOIN orders ON (customers.customer_id = orders.customer_id AND year(orders.order_date) = 2004) WHERE orders.order_id IS NULL 
Please note that year is not an ANSI-SQL function and that many databases do not support it, but have alternative ways of doing the same thing.
  • SQL Server, MS Access, MySQL support year().
  • PostGreSQL you do date_part('year', orders.order_date)
  • SQLite - substr(orders.order_date,1,4) - If you store the date in form YYYY-MM-DD
  • Oracle - EXTRACT(YEAR FROM order_date) or to_char(order_date,'YYYY')
Note: You can also do the above with an IN clause, but an IN tends to be slower
Same question with an IN clause
SELECT customers.* FROM customers WHERE customers.customer_id NOT IN(SELECT customer_id FROM orders WHERE year(orders.order_date) = 2004) 

Fun with Statistics - Aggregates

How many customers do we have in Massachusetts and California?
SELECT customer_state As state, COUNT(customer_id) As total FROM customers WHERE customer_state IN('MA', 'CA') GROUP BY customer_state 
What states do we have more than 5 customers? 
SELECT customer_state, COUNT(customer_id) As total
FROM customers
GROUP BY customer_state
HAVING COUNT(customer_id) > 5

How many states do we have customers in?
SELECT COUNT(DISTINCT customer_state) AS total
FROM customers

Note the above does not work in Microsoft Access or SQLite - they do not support COUNT(DISTINCT ..)
Alternative but slower approach for the above - for databases that don't support COUNT(DISTINCT ..), but support derived tables
SELECT count(customer_state) FROM (SELECT DISTINCT customer_state FROM customers); 
List in descending order of orders placed customers that have placed more than 5 orders
SELECT customer_id, customer_name, COUNT(order_id) as total
FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id
GROUP BY customer_id, customer_name
HAVING COUNT(order_id) > 5
ORDER BY COUNT(order_id) DESC

How do you insert records in a table?

Value Insert

INSERT INTO customers(customer_id, customer_name)
VALUES('12345', 'GIS Experts')


Copy data from one table to another table
INSERT INTO customers(customer_id, customer_name)
SELECT cus_key, cus_name
FROM jimmyscustomers WHERE customer_name LIKE 'B%'


Creating a new table with a bulk insert from another table

SELECT *  INTO archivecustomers
FROM jimmyscustomers WHERE active = 0

How do you update records in a table?

Update from values
UPDATE customers SET customer_salesperson = 'Billy' WHERE customer_state = 'TX' 

Update based on information from another table
UPDATE customers SET rating = 'Good' FROM orders WHERE orderdate > '2005-01-01' and orders.customer_id = customers.customer_id 
Please note the date format varies depending on the database you are using and what date format you have it set to.

Update based on information from a derived table
UPDATE customers
        SET totalorders = ordersummary.total
        FROM (SELECT customer_id, count(order_id) As total 
FROM orders GROUP BY customer_id) As ordersummary
        WHERE customers.customer_id = ordersummary.customer_id
Please note the update examples involving additional tables do not work in MySQL, MSAccess, SQLite. 

MS Access Specific syntax for doing multi-table UPDATE joins
UPDATE customers INNER JOIN orders ON customers.customer_id = orders.customer_id SET customers.rating = 'Good' 

MySQL 5 Specific syntax for doing multi-table UPDATE joins
UPDATE customers, orders SET customers.rating = 'Good' WHERE orders.customer_id = customers.customer_id






SQL is a standard language for accessing and manipulating databases.

What is SQL?

  • SQL stands for Structured Query Language
  • SQL lets you access and manipulate databases
  • SQL is an ANSI (American National Standards Institute) standard

What Can SQL do?

  • SQL can execute queries against a database
  • SQL can retrieve data from a database
  • SQL can insert records in a database
  • SQL can update records in a database
  • SQL can delete records from a database
  • SQL can create new databases
  • SQL can create new tables in a database
  • SQL can create stored procedures in a database
  • SQL can create views in a database
  • SQL can set permissions on tables, procedures, and views













SQL is a Standard - BUT....

Although SQL is an ANSI (American National Standards Institute) standard, there are many different versions of the SQL language.
However, to be compliant with the ANSI standard, they all support at least the major commands (such as SELECT, UPDATE, DELETE, INSERT, WHERE) in a similar manner.
Note: Most of the SQL database programs also have their own proprietary extensions in addition to the SQL standard!

Using SQL in Your Web Site

To build a web site that shows some data from a database, you will need the following:
  • An RDBMS database program (i.e. MS Access, SQL Server, MySQL)
  • A server-side scripting language, like PHP or ASP
  • SQL
  • HTML / CSS

RDBMS

RDBMS stands for Relational Database Management System.
RDBMS is the basis for SQL, and for all modern database systems like MS SQL Server, IBM DB2, Oracle, MySQL, and Microsoft Access.
The data in RDBMS is stored in database objects called tables.
A table is a collections of related data entries and it consists of columns and rows.




Test your SQL Skills

On this page you can test your SQL skills.
We will use the Customers table in the Northwind database:
CompanyNameContactNameAddressCity
Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 
Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå 
Centro comercial Moctezuma Francisco Chang Sierras de Granada 9993 México D.F. 
Ernst Handel Roland Mendel Kirchgasse 6 Graz 
FISSA Fabrica Inter. Salchichas S.A. Diego Roel C/ Moralzarzal, 86 Madrid 
Galería del gastrónomo Eduardo Saavedra Rambla de Cataluña, 23 Barcelona 
Island Trading Helen Bennett Garden House Crowther Way Cowes 
Königlich Essen Philip Cramer Maubelstr. 90 Brandenburg 
Laughing Bacchus Wine Cellars Yoshi Tannamuri 1900 Oak St. Vancouver 
Magazzini Alimentari Riuniti Giovanni Rovelli Via Ludovico il Moro 22 Bergamo 
North/South Simon Crowther South House 300 Queensbridge London 
Paris spécialités Marie Bertrand 265, boulevard Charonne Paris 
Rattlesnake Canyon Grocery Paula Wilson 2817 Milton Dr. Albuquerque 
Simons bistro Jytte Petersen Vinbæltet 34 København 
The Big Cheese Liz Nixon 89 Jefferson Way Suite 2 Portland 
Vaffeljernet Palle Ibsen Smagsløget 45 Århus 
Wolski Zajazd Zbyszek Piestrzeniewicz ul. Filtrowa 68 Warszawa 
To preserve space, the table above is a subset of the Customers table used in the example below.

Try it Yourself

To see how SQL works, you can copy the SQL statements below and paste them into the textarea, or you can make your own SQL statements.
SELECT * FROM customers


SELECT CompanyName, ContactName FROM customers


SELECT * FROM customers WHERE companyname LIKE 'a%'


SELECT CompanyName, ContactName
FROM customers
WHERE CompanyName > 'a'
 When using SQL on text data, "alfred" is greater than "a" (like in a dictionary).
SELECT CompanyName, ContactName
FROM customers
WHERE CompanyName > 'g'
AND ContactName > 'g'






The ORDER BY keyword is used to sort the result-set.














The ORDER BY Keyword

The ORDER BY keyword is used to sort the result-set by a specified column.
The ORDER BY keyword sort the records in ascending order by default.
If you want to sort the records in a descending order, you can use the DESC keyword.

SQL ORDER BY Syntax

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC

















ORDER BY Example

The "Persons" table:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
4NilsenTomVingvn 23Stavanger
Now we want to select all the persons from the table above, however, we want to sort the persons by their last name.
We use the following SELECT statement:
SELECT * FROM Persons
ORDER BY LastName
The result-set will look like this:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
4NilsenTomVingvn 23Stavanger
3PettersenKariStorgt 20Stavanger
2SvendsonToveBorgvn 23Sandnes

















ORDER BY DESC Example

Now we want to select all the persons from the table above, however, we want to sort the persons descending by their last name.
We use the following SELECT statement:
SELECT * FROM Persons
ORDER BY LastName DESC
The result-set will look like this:
P_IdLastNameFirstNameAddressCity
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
4NilsenTomVingvn 23Stavanger
1HansenOlaTimoteivn 10Sandnes


SQL Quick Reference From W3Schools










SQL StatementSyntax
AND / ORSELECT column_name(s)
FROM table_name
WHERE condition
AND|OR condition
ALTER TABLEALTER TABLE table_name
ADD column_name datatype
or
ALTER TABLE table_name
DROP COLUMN column_name
AS (alias)SELECT column_name AS column_alias
FROM table_name
or
SELECT column_name
FROM table_name  AS table_alias
BETWEENSELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
CREATE DATABASECREATE DATABASE database_name
CREATE TABLECREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name2 data_type,
...
)
CREATE INDEXCREATE INDEX index_name
ON table_name (column_name)
or
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE VIEWCREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
DELETEDELETE FROM table_name
WHERE some_column=some_value
or
DELETE FROM table_name
(Note: Deletes the entire table!!)
DELETE * FROM table_name
(Note: Deletes the entire table!!)
DROP DATABASEDROP DATABASE database_name
DROP INDEXDROP INDEX table_name.index_name (SQL Server)
DROP INDEX index_name ON table_name (MS Access)
DROP INDEX index_name (DB2/Oracle)
ALTER TABLE table_name
DROP INDEX index_name (MySQL)
DROP TABLEDROP TABLE table_name
GROUP BYSELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVINGSELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
INSELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)
INSERT INTOINSERT INTO table_name
VALUES (value1, value2, value3,....)
or
INSERT INTO table_name
(column1, column2, column3,...)
VALUES (value1, value2, value3,....)
INNER JOINSELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LEFT JOINSELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
RIGHT JOINSELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
FULL JOINSELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LIKESELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
ORDER BYSELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC]
SELECTSELECT column_name(s)
FROM table_name
SELECT *SELECT *
FROM table_name
SELECT DISTINCTSELECT DISTINCT column_name(s)
FROM table_name
SELECT INTOSELECT *
INTO new_table_name [IN externaldatabase]
FROM old_table_name
or
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_table_name
SELECT TOPSELECT TOP number|percent column_name(s)
FROM table_name
TRUNCATE TABLETRUNCATE TABLE table_name
UNIONSELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
UNION ALLSELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
UPDATEUPDATE table_name
SET column1=value, column2=value,...
WHERE some_column=some_value
WHERESELECT column_name(s)
FROM table_name
WHERE column_name operator value
Source : http://www.w3schools.com/sql/sql_quickref.asp





The DELETE statement is used to delete records in atable.









The DELETE Statement

The DELETE statement is used to delete rows in a table.

SQL DELETE Syntax

DELETE FROM table_name
WHERE some_column=some_value
Note: Notice the WHERE clause in the DELETE syntax. The WHERE clause specifies which record or records that should be deleted. If you omit the WHERE clause, all records will be deleted!

SQL DELETE Example

The "Persons" table:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
4NilsenJohanBakken 2Stavanger
5TjessemJakobNissestien 67Sandnes
Now we want to delete the person "Tjessem, Jakob" in the "Persons" table.
We use the following SQL statement:
DELETE FROM Persons
WHERE LastName='Tjessem' AND FirstName='Jakob'
The "Persons" table will now look like this:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
4NilsenJohanBakken 2Stavanger


Delete All Rows







It is possible to delete all rows in a table without deleting the table. This means that the table structure, attributes, and indexes will be intact:
DELETE FROM table_name


or


DELETE * FROM table_name
Note: Be very careful when deleting records. You cannot undo this statement!

The AND & OR operators are used to filter records based on more than one condition.

The AND & OR Operators

The AND operator displays a record if both the first condition and the second condition is true.
The OR operator displays a record if either the first condition or the second condition is true.

AND Operator Example

The "Persons" table:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
Now we want to select only the persons with the first name equal to "Tove" AND the last name equal to "Svendson":
We use the following SELECT statement:
SELECT * FROM Persons
WHERE FirstName='Tove'
AND LastName='Svendson'
The result-set will look like this:
P_IdLastNameFirstNameAddressCity
2SvendsonToveBorgvn 23Sandnes










OR Operator Example

Now we want to select only the persons with the first name equal to "Tove" OR the first name equal to "Ola":
We use the following SELECT statement:
SELECT * FROM Persons
WHERE FirstName='Tove'
OR FirstName='Ola'
The result-set will look like this:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes











Combining AND & OR

You can also combine AND and OR (use parenthesis to form complex expressions).
Now we want to select only the persons with the last name equal to "Svendson" AND the first name equal to "Tove" OR to "Ola":
We use the following SELECT statement:
SELECT * FROM Persons WHERE
LastName='Svendson'
AND (FirstName='Tove' OR FirstName='Ola')
The result-set will look like this:
P_IdLastNameFirstNameAddressCity
2SvendsonToveBorgvn 23Sandnes

The UPDATE statement is used to update records in a table.








The UPDATE Statement

The UPDATE statement is used to update existing records in a table.

SQL UPDATE Syntax

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
Note: Notice the WHERE clause in the UPDATE syntax. The WHERE clause specifies which record or records that should be updated. If you omit the WHERE clause, all records will be updated!

SQL UPDATE Example

The "Persons" table:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
4NilsenJohanBakken 2Stavanger
5TjessemJakob
Now we want to update the person "Tjessem, Jakob" in the "Persons" table.
We use the following SQL statement:
UPDATE Persons
SET Address='Nissestien 67', City='Sandnes'
WHERE LastName='Tjessem' AND FirstName='Jakob'
The "Persons" table will now look like this:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
4NilsenJohanBakken 2Stavanger
5TjessemJakobNissestien 67Sandnes










SQL UPDATE Warning

Be careful when updating records. If we had omitted the WHERE clause in the example above, like this:
UPDATE Persons
SET Address='Nissestien 67', City='Sandnes'
The "Persons" table would have looked like this:
P_IdLastNameFirstNameAddressCity
1HansenOlaNissestien 67Sandnes
2SvendsonToveNissestien 67Sandnes
3PettersenKariNissestien 67Sandnes
4NilsenJohanNissestien 67Sandnes
5TjessemJakobNissestien 67Sandnes



This chapter will explain the SELECT and the SELECT * statements.










The SQL SELECT Statement

The SELECT statement is used to select data from a database.
The result is stored in a result table, called the result-set.

SQL SELECT Syntax

SELECT column_name(s)
FROM table_name
and
SELECT * FROM table_name
Note Note: SQL is not case sensitive. SELECT is the same as select.

An SQL SELECT Example

The "Persons" table:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
Now we want to select the content of the columns named "LastName" and "FirstName" from the table above.
We use the following SELECT statement:
SELECT LastName,FirstName FROM Persons
The result-set will look like this:
LastNameFirstName
HansenOla
SvendsonTove
PettersenKari


SELECT * Example







Now we want to select all the columns from the "Persons" table.
We use the following SELECT statement: 
SELECT * FROM Persons
Tip: The asterisk (*) is a quick way of selecting all columns!
The result-set will look like this:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
















Navigation in a Result-set

Most database software systems allow navigation in the result-set with programming functions, like: Move-To-First-Record, Get-Record-Content, Move-To-Next-Record, etc.
Programming functions like these are not a part of this tutorial. To learn about accessing data with function calls, please visit our ADO tutorial or our PHP tutorial.

The INSERT INTO statement is used to insert new records in a table.

The INSERT INTO Statement

The INSERT INTO statement is used to insert a new row in a table.

SQL INSERT INTO Syntax

It is possible to write the INSERT INTO statement in two forms.
The first form doesn't specify the column names where the data will be inserted, only their values:
INSERT INTO table_name
VALUES (value1, value2, value3,...)
The second form specifies both the column names and the values to be inserted:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)



SQL INSERT INTO Example









We have the following "Persons" table:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
Now we want to insert a new row in the "Persons" table.
We use the following SQL statement:
INSERT INTO Persons
VALUES (4,'Nilsen', 'Johan', 'Bakken 2', 'Stavanger')
The "Persons" table will now look like this:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
4NilsenJohanBakken 2Stavanger











Insert Data Only in Specified Columns

It is also possible to only add data in specific columns.
The following SQL statement will add a new row, but only add data in the "P_Id", "LastName" and the "FirstName" columns:
INSERT INTO Persons (P_Id, LastName, FirstName)
VALUES (5, 'Tjessem', 'Jakob')
The "Persons" table will now look like this:
P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
4NilsenJohanBakken 2Stavanger
5TjessemJakob


Connect to (import) SQL Server data







You can use an Office Data Connection (.odc) file to connect to a Microsoft SQL Server database from a Microsoft Office Excel 2007 file. SQL Server is a full-featured, relational database program that is designed for enterprise-wide data solutions that require optimum performance, availability, scalability, and security.
  1. On the Data tab, in the Get External Data group, click From Other Sources, and then click From SQL Server.
Excel Ribbon image
The Data Connection Wizard starts. This wizard has three pages.
Page 1: Connect to Database Server    
  1. In step 1, type the name of the SQL Server computer in the Server name box.
  2. In step 2, under Log on credentials, do one of the following:
    • To use your current Microsoft Windows user name and password, click Use Windows Authentication.
    • To enter a database user name and password, click Use the following User Name and Password, and then type your user name and password in the corresponding User Name and Password boxes.
Security   Use strong passwords that combine uppercase and lowercase letters, numbers, and symbols. Weak passwords don't mix these elements. Strong password: Y6dh!et5. Weak password: House27. Passwords should be 8 or more characters in length. A pass phrase that uses 14 or more characters is better. For more information, see Help protect your personal information with strong passwords.It is critical that you remember your password. If you forget your password, Microsoft cannot retrieve it. Store the passwords that you write down in a secure place away from the information that they help protect.
Page 2: Select Database and Table    
  1. Under Select the database that contains the data you want, select a database. Under Connect to a specific table, select a specific table or view.
Alternatively, you can clear the Connect to a specific table check box, so that other users who use this connection file will be prompted for the list of tables and views.
Page 3: Save Data Connection File and Finish    
  1. Optionally, in the File Name box, revise the suggested file name. Click Browse to change the default file location (My Data Sources).
  2. Optionally, type a description of the file, a friendly name, and common search words in the Description, Friendly Name, and Search Keywords boxes.
  3. To ensure that the connection file is always used when the data is updated, click the Always attempt to use this file to refresh this data check box. This check box ensures that updates to the connection file will always be used by all workbooks that use that connection file.
  4. To specify how the external data source of a PivotTable report is accessed if the workbook is saved to Excel Services and is opened by using Excel Services, click Authentication Settings, and then select one of the following options to log on to the data source:
    • Windows Authentication    Select this option to use the Windows user name and password of the current user. This is the most secure method, but it can affect performance when many users are connected to the server.
    • SSO    Select this option to use Single Sign On (SSO), and then enter the appropriate identification string in the SSO ID box. A site administrator can configure a Windows SharePoint Services site to use a Single Sign On database in which a user name and password can be stored. This method can be the most efficient when many users are connected to the server.
    • None    Select this option to save the user name and password in the connection file.
Security  Avoid saving logon information when connecting to data sources. This information may be stored as plain text, and a malicious user could access the information to compromise the security of the data source.
  1.  Note   The authentication setting is used only by Excel Services, and not by Excel.
  2. Click OK.
  3. Click Finish to close the Data Connection Wizard.
The Import Data dialog box is displayed.
  1. Under Select how you want to view this data in your workbook, do one of the following:
    • To create an Excel table, click Table (this is the default).
    • To create a PivotTable report, click PivotTable Report.
    • To create a PivotChart and PivotTable report, click PivotChart and PivotTable Report.
 Note   The Only Create Connection option is available only for an OLAP database.
  1. Under Where do you want to put the data?, do one of the following:
    • To place the data in an existing worksheet, select Existing worksheet, and then type the name of the first cell in the range of cells where you want to locate the data.
Alternatively, click Collapse Dialog Button image to temporarily collapse the dialog box, select the beginning cell on the worksheet, and then click Expand Dialog Button image.
  • To place the data in a new worksheet starting at cell A1, click New worksheet.
  1. Optionally, you can change the connection properties (and also change the connection file) by clicking Properties, making your changes in the Connection Properties dialog box, and then clicking OK.
For more information, see Connection properties.


With the recent announcement of
SharePoint Server 2007 supporting SQL Server 2008, like you, I was excited to setup my Excel / Excel Services environment to take advantage of the great new capabilities available, and there are many. I encourage you to take a look at how the new SQL environment will benefit your SharePoint deployment, and your Business Intelligence reporting and analysis capabilities.
SharePoint Server 2007 can use SQL Server 2008 as a repository without any extra configuration requirements.  What about connecting Excel client to the new Analysis Services environment?
Excel accesses Analysis Services 2008 the same way it does 2005.  From within  Excel, select the Analysis Services drop down from the Data tab -> From Other Sources drop down, and then walk through the data connection wizard to identify location, cube, and credentials. Ensure that the necessary SQL Server 2008 client components are installed prior to making the connection as the provider for Analysis Services 2008 is MSOLAP.4 (more about this later).

Connecting to Analysis Services in Excel
You should now have a connection to a cube within Excel and a pivot table ready.
So far so good right?  With a few simple clicks you are accessing the cube on Analysis Services 2008.  You've created a great looking report, and now want to distribute it on SharePoint Excel Services.  Here's how you go about setting up the connection so that Excel Services can access Analysis Services 2008.

Excel Connection Properties pane
If you take a look at the connection string in Excel, you'll notice that connecting to Analysis Services 2008 uses the following provider, MSOLAP.4.  This is not in the list of providers that ships with Excel Services so you will need to add this to the list.  You will also need to install the client access components of SQL Server 2008 on each of your SharePoint servers that will require access to SQL Server 2008.  For example, you can install the client access components on the Shared Service where Excel Services runs.
To add the provider to the list of approved providers in Excel Services, go to the Shared Services administration page (Central Administration -> Shared Services Administration) for Excel Services.  Select Trusted Data Providers from the Excel Services Settings of the Shared Services Administration page.  You will see that by default MSOLAP, MSOLAP.1, MSOLAP.2 and MSOLAP.3 are installed by default.  You will need to add MSOLAP.4 to the trusted list in order for the connection to work in Excel Services. Excel Services Trusted Data Providers List
Click Add Trusted Data Provider at the top of the list, and enter
Provider ID = MSOLAP.4
Data Provider Type = OLE DB
Description = Microsoft OLE DB Provider for OLAP Services 10.0.
You are now set.  Publish your workbook to Excel Services and you will be able to view, interact and refresh data from Analysis Services 2008 in Excel Services.

Microsoft Excel 2010








Introducing PowerPivot









PowerPivot is the recently announced name of technologies this blog previously referred to by its codename, Gemini. This article describes why there is a need for such a tool, and briefly what PowerPivot provides. More information is available on the PowerPivot blog.

The Need for PowerPivot

PivotTables continue to be indispensible for allowing users to analyze their data flexibly and interactively. If you’re a subscriber of this blog, you’ve already read some of the recent articles on investments the Excel team continues to make around PivotTables for Excel 2010.
However, using a PivotTable that connects to an OLAP data source of course requires such a data source to exist. While a corporation may have many OLAP data sources where a single version of the truth and a unified model for looking at the business is necessary, this is not always the requirement.
For personal or workgroup-oriented solutions, our customers tell us there’re shortcomings in technology available: 
  1. Requires advanced technical knowledge: Creating OLAP cubes is a non-trivial effort which requires highly technical understanding of concepts such as dimensions, measures, MDX, etc. As such, IT staff is frequently called upon to create such models on behalf of business users.
  2. Incurs higher cost to solution: Since IT groups have limited bandwidth, only a few of an organization’s analysis projects get the necessary attention and resources. In order to increase efficiency, IT may also attempt to consolidate similar solutions, which incur higher coordination cost and increased time to delivery.
  3. Produces solutions that are hard to customize: Business users frequently ask for data sets or analysis paths that they could not have predicted earlier. This is typical of ad hoc analysis that PivotTables support – an answer frequently leads to the next question and it is very hard to predict all possible questions, and time consuming to bake them in the model a priori. In addition, some data, may be so specific to a business problem that one user of the model may have it on their desktop, and it is not appropriate to share it across all users of a cube.
  4. Increases cost of ownership and friction: Some business teams hire technical consultants or volunteer one of their own to take on this “burden”. Unfortunately, this responsibility goes beyond learning new technology into also developing skills and devoting time for managing and maintaining any delivered solutions. In addition, IT stays unaware of such underground applications and get rightly concerned about business decisions being made on solutions not supported by them.
Lets take a step back to make a few key observations:
  • A significant gap exists between an organization’s need for deriving insights from their data and the organization’s capacity to satisfy that need.
  • IT and business user resources are being stretched beyond their natural competencies: IT has to become more familiar with business users’ domain, and business users need to become more technical so that they can “speak” IT.
  • In our view, what’s missing is simply technology that allows business users to help themselves while providing visibility to IT, a scenario we call “Managed Self Service Business Intelligence”.

PowerPivot

The PowerPivot functionality is delivered by SQL Server’s Analysis Services team in collaboration with the Excel team and is based on our experience delivering the Microsoft Business Intelligence platform over the last decade.
There’re two components of PowerPivot: PowerPivot for Excel 2010 and PowerPivot for SharePoint 2010.
Designed for business users, PowerPivot for Excel 2010 is a data analysis tool that delivers unmatched computational power directly within the application users already know and love — Excel. Leveraging familiar Excel features, users can transform enormous quantities of data from virtually any source with incredible speed into meaningful information to get the answers they need in seconds. PowerPivot for Excel consists of the following components:
  • The Excel 2010 addin that delivers the seamless PowerPivot user experience integrated within Excel.
  • The VertiPaq engine that compresses and manages millions of rows of data in memory with blazing fast performance.
PowerPivot for SharePoint 2010 enables end users to effortlessly and securely share their PowerPivot applications with others and work seamlessly in the browser using Excel Services. PowerPivot for SharePoint also helps IT improve their operational efficiencies by tracking PowerPivot usage patterns over time, discovering mission-critical applications, and improving system performance by adding resources. PowerPivot for SharePoint consists of the following components:
  • PowerPivot Gallery – a Silverlight based gallery where users can share PowerPivot applications with others and visualize and interact with applications produced by others using Excel Services and Reporting Services.
  • PowerPivot Management Dashboard – a dashboard that enables IT to monitor and manage the PowerPivot for SharePoint environment.
  • PowerPivot Web Service – the “front-end” service that exposes PowerPivot data via XML/A to external applications such as Report Builder.
  • PowerPivot System Service – the “back-end” service that manages the PowerPivot application database, load balancing, usage data collection, automatic data refresh, etc.
  • Analysis Services – the Analysis Services server running the VertiPaq in-memory engine and integrated with SharePoint to load and manage the data within PowerPivot workbooks.
We’ll drill into these features in the next few blogs. Stay tuned!














Could Google's phone service make calling from a computer the new norm?
Could Google's phone service make calling from a computer the new norm?
Not content with dominating search, email, maps and online video, this week Google announced that, for its American customers at least, it will also be attempting to usurp the telephone.
Within days of rolling out the option to call Google contacts’ phones from within its Gmail service, the search giant revealed that more than a million people had already used the service, which it is expecting to be driven in large part by bargain rates for international calls. But for consumers, it’s another step along the road to the idea of one number that can reach you wherever you are, rather than separate ones for mobile, home and work.
The move puts Google in direct competition with Skype, whose forthcoming IPO may now be looking somewhat less attractive, but it also marks a new evolution in the connectivity of services; the web browser, on a phone or a computer, is becoming the window via which consumers can view everyone they know. In due course it’s likely, too, that the idea of dialling a number on a landline phone will be as unusual as actually dialling one on a mobile.
Indeed, with Google’s existing American service, Google Voice, the idea of differentiating between one number for mobile and landline already seems increasingly antiquated. Just as there is one Facebook profile, one main email address, so too the integration of services looks set to mean one phone number will ring through to the most appropriate mobile, desk phone or computer.
Robin Murdoch, consultancy Accenture’s lead on internet, says that Google’s step is “evolutionary rather than revolutionary – what they’ve done is integrated the voice service they’ve already got much more tightly into Gmail. But the trend is what’s more interesting and important: it’s the increasingly unified tools that websites are constructing which offer a range of ways to communicate all in one place.”
That means, according to Murdoch, that the appearance of technological barriers will start to diminish. “Consumers increasingly are going to lose the sense of whether they’re doing something through a web browser or through a dedicated app or programme,” he says. “Where the browser ends and the app begins will become much harder to discern.”
The technology that makes data lines useful for telephone conversations is called Voice over Internet Protocol (VoIP), and many large companies already use it because it provides cheaper, cleverer phone networks. At the other end of the scale, individual customers of BT Broadband have long been offered a VoIP service, too.
What few organisations or individuals have achieved, however, is the complete integration of contacts into a single system integrated into several devices. So mobile phones and BlackBerry devices usually have far more information about contacts than landline phones. Google’s move is the beginning of a bid to bring them all together. It’s a logical, obvious ambition to unify communication, in its various modern forms, into a single place.
At the back of all this, Murdoch points out, is Google’s desire to get ever more people using the internet. “Google makes its money through search,” he says. “So the more people are online, the more likely it is they’ll be looking for things, whatever else they’re doing at the same time, and the more likely it is that Google will be able to make money selling advertising.”
It’s this that allows Google and other major web companies such as Facebook to offer previously costly services in their current free products. Google, for instance, is offering free US and Canadian calls “at least until the end of the year”.
Realistically, of course, the day when the landline, mobile and computer are all completely united is some way off. But the integration of systems across multiple devices is likely, with the muscle of corporations such as Google behind it, to offer genuine benefits to consumers – and it presents a major revenue opportunity to the companies themselves.



Resume Tips:


Quick Disclaimer: Although this post is intended to be humorous, the following examples are all based off of actual resume problems I have seen. Numerous times. On multiple resumes. Good grief.
Before I get started, if you are actually working on your resume, I strongly recommend the two following articles/blog posts.  The advice they give (including the fact that no hiring manager cares about your "Career Objective" statement) are spot on.
In no particular order, I give you:
  1. If your resume is over 7 pages long, showing your work history back to 1991, and you have never held a job for longer than 3 months at a time, I am unlikely to follow-up and schedule an interview. I have absolutely no problem with a short job here or there, or gaps between jobs. We have all been hired into jobs we hated, or ended up unemployed. Meticulous documentation on your inability to hold a steady job for over a decade is something else entirely.
  2. If you made it through high school or college with a GPA of 3.0 or higher… good job! Feel free to add it to your resume (although it is not likely to affect my decision one way or the other). If you wrapped up your education with a GPA around (or under) 2.0… I would stay away from broadcasting that information.
  3. Please please please… do not list every computer program you have ever used (or list versions that never existed). Although it boggles my mind, I cannot tell you how many resumes I have read that look like:


















    Programs Used: HP Photosmart Print Driver 5.2.1.63, Windows 3.1, Windows 3.1.1, Windows 95, Windows 95b, Windows 97, Office 4.2.1, Mac OS 6, Oregon Trail, Sheet Metal Scrappings Collector 6.9.1, Adobe Reader, America Online 4.5.6, Prodigy 2.1, CompuServe 3.5, eWorld, Novell Netware 1.6.8, Packard Bell Software Updater 4.3
    Where do these lists even come from? Are you running an inventory on the broken computer in the garage? If you haven't used a computer since 1997, maybe Microsoft isn't the place to apply.
  4. Same goes for hardware. I don't have any interest in seeing a model listing of the D-Link router you have at home. If you are a Cisco CCNA/CCNP, or are a Data center Server Engineer of some sort… a few models are okay. If not, please don't tell me the model number of the Global Village 14.4Kbps modem you had in high school.
  5. Same goes for protocols randomly interspersed with cabling types. Seriously… what does it demonstrate when you fill up space on the resume with: TCP/IP, SMB, Apple Talk, Banyan Vines, IP, UDP, CAT 5, FTP, EIEIO, DNS, Gopher, ARP, FDDI, ABC, COAX, POP, IMAP, DHCP? I suppose it shows that you are capable of copying the index of a Network+ book, but it doesn't do a whole lot for me. Any guesses as to how many people with this information on their resume can actually name the applicable port number, the location of the protocol in the OSI model, the purpose of the protocol, or how something like DHCP works behind the scenes?
  6. Office equipment: For my senior-level support position, the fact that you know how to use a copier, a fax machine, and a papercutter… is somewhere between meaningless and absurd. I'm not even sure that someone hiring for an office worker position needs that information.
  7. Padding your resume: I know it is a common practice to add a little "oomph" to your resume. Out there on the Internet is a copy of my first resume, where I listed experience as a "Landscape Maintenance Technician" (misspelled no less). In other words, I picked weeds every other weekend for a nice old lady in my neighborhood.
However, if you have never actually installed a copy of Windows Server, but you list your experience as "Senior Architectural Consultant who singlehandedly designed an international multi-site Active Directory and Exchange deployment for a Fortune 100 company, with a fault-tolerant backup plan and a 5-nines uptime SLA"… Odds are that the discrepancy will come up in the interview. You will look pretty silly at that point.
When hiring for a position, I want you to succeed.  I really do.  Stay away from the above mistakes, run the 'ol resume through a spell-check before submitting, and let me see a well-rounded individual with a clear record of career progression and passion for technology.  That is the best way to get a follow-up phone call from the recruiter.


System Center Data Protection Manager 2010 Documentation
























  • image
    Jason Buffington’s Book on Data Protection for Virtual Data Centers is now available at Amazonand Barnes & Noble, but while you are waiting for the UPS Man to arrive, the DPM Content Publishing team has been hard at work on documentation to help you plan, run, and troubleshoot your installation oData Protection Manager 2010.
    Check out the website for the book -- Data Protection for Virtual Datacenters
    Planning a System Center Data Protection Manager 2010 Deployment
    This guide provides an introduction to Data Protection Manager (DPM) 2010 and guidance on how to plan a DPM 2010 deployment.
    image
    Gratuitous usage of a Visio Diagram in a post.  I just picked
    a pretty diagram from the paper.  It doesn’t really relate to anything.

    Deploying System Center Data Protection Manager 2010
    This guide provides step-by-step instructions for installing, upgrading, and configuring DPM 2010, and includes an introduction to the DPM user interface, DPM Administrator Console. This guide also provides step-by-step instructions for troubleshooting, repairing, and uninstalling a DPM 2010 installation.
    Data Protection Manager 2010 Operations Guide
    This guide provides recommendations for monitoring and managing DPM servers and tape libraries, and protected computers that are running Microsoft Exchange Server, Microsoft SQL Server, Windows SharePoint Services, Microsoft Virtual Server, or the Hyper-V role in Windows Server 2008 or Windows Server 2008 R2. This guide also provides instructions for setting up protection of data on desktop computers that are connected to the network, and portable computers that are connected to the network intermittently, and for setting up disaster recovery.
    image
    Data Protection Manager 2010 Troubleshooting Guide
    This guide explains the process for diagnosing request tracking and error tracing for Data Protection Manager (DPM) 2010, provides troubleshooting information by product category, and includes a list of the error codes for DPM 2010.























  • Upgrading from SharePoint Portal Server & Project Server 2003 to SharePoint/Project Server 2010

    • 0
    I’ll get the ugly out of the way first… When developing Project Server 2010, the development team was faced with the same constraints that any project team faces… the Project Management Triangle (which the Project Management Institute (PMI) has now replaced with the six-dueling-constraints-of-doom as illustrated below http://www.bing.com/search?q=pmbok+six+constraints).
    Given unlimited time and resources, the team could deliver unlimited features.  Unfortunately, there are ship dates and budget and risks and resources to consider, and above all, shipping is a feature.  A critically important one.  When faced with the decision of adding the great features that are part of SharePoint and Project Server 2010 or enabling direct upgrades from n-2 versions that had shipped in 2003, they decided to go with the former.
    image
    That was a long way of saying that you cannot upgrade directly from SharePoint Portal Server 2003 or Project Server 2003 to their 2010 equivalents.  It also allowed me to play with Smart Art in PowerPoint 2010 and link to Wikipedia, Bing, and Joel Spolsky :)
    So how do you upgrade from SharePoint Portal Server 2003 or Project Server 2003 to Project Server 2010?  Ideally, at Microsoft we would love you to have Software Assurance so you can always update to the latest and greatest version :)  If that isn’t in the cards for some reason, then the SharePoint and Project teams have come up with the Virtual Migration Environment (VME) for Microsoft Project 2010 and Microsoft SharePoint 2010.
    The Virtual Migration Environment is a set of two virtual disks that provide Office Project Server 2007 and Office SharePoint Server 2007 environments, sample content, and scripts design to assist customers with upgrade and migration from Office Project Server 2003 and Office SharePoint Portal Server 2003 to Project Server 2010 and SharePoint Server 2010. The Virtual Migration Environment provides the tools and resources to assist with upgrade and migration and planning and preparation resources to determine upgrade approaches and address common issues.
    The Virtual Migration Environment can be used to attach your existing production Project Server 2003 or SharePoint Portal Server 2003 databases for upgrade to Project Server 2007 or Office SharePoint Server 2007 or can be used with sample databases to test and understand the upgrade process.
    A free Hyper-V image that is preconfigured with SharePoint 2007 and Project Server 2007, along with planning information, training videos, documentation, and a pretty sweet background?  How can you go wrong?  Download it here.
    image
    For more information on planning your upgrade/migration, please visit the following Upgrade and Migration Centers on Microsoft TechNet:























  • Securing SharePoint and Project Server 2010

    • 0
    A year ago, I showed how to lock down SharePoint 2007 using the Security Configuration Wizard that was introduced with Windows Server 2003.  The last post includes information on how the tool works, but  as the Microsoft SharePoint 2010 Administration Toolkit was just released (which includes the Security Configuration Wizard (SCW) manifests for SharePoint 2010 running on Windows Server 2008/R2, I thought I would link to some resources and provide screenshots of the process.
    While the documentation discusses how to install the SharePoint Foundation and SharePoint Server manifests, it appears that Project Server 2010 security manifests are included as well:
    image
    The Project Server manifests depend upon having the SharePoint Foundation and SharePoint Server manifests installed following the steps here, after which you can register them as follows:
    • If you are using Windows Server 2008 Service Pack 2, type scwcmd register /kbname:PROJECTSERVER2010 /kbfile:Project2010W2K8.xml and press ENTER.
    • If you are using Windows Server 2008 R2, type scwcmd register /kbname:PROJECTSERVER2010 /kbfile:Project2010W2K8R2.xml and press ENTER.
    Once you are done, just start up the Security Configuration Wizard by clicking Start –> Run –>scw.exe.  Just click through the wizard, choose the appropriate options, and apply the configuration.  You will then be all set to go with unnecessary services/ports disabled and firewall/auditing/registry settings configured as locked down.
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image




    image




























Learn Web Development with the Web Camps Training Kit
I see that Microsoft have released the Web Camps Training Kit: July 2010 Edition. This is perfect timing as I am in the process of teaching myself Web Development. Overview http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/1882.image_5F00_4551F69C.png
The kit includes all the content presented around the world at the recent Web Camps events; presentations, demos, labs and more. Inside the new kit you’ll find content that covers the following technologies:

•ASP.NET MVC 2
•ASP.NET 4 Web Forms
•jQuery
•Entity Framework
•Visual Studio 2010
We’ve also included scenario based content which comes in the form of complimentary slides, demos, demo scripts and hands-on-labs. These scenarios show you how to take your own web application from an idea and prototype all the way to getting more visitors and optimizing for performance using the Microsoft Web Platform and other technologies from Microsoft.

•Prototyping Your Web App
•Building Your Web App
•Enhancing Your Web App
•Getting More Visitors to your Web App
•Optimizing Your Web App for High Performance

http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/7750.image_5F00_thumb_5F00_43A12AC8.png




Internet Explorer 8–Show Stop and Refresh Buttons Before Address Bar

http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/2251.image_5F00_4.png

However, if you use alternative browsers, you may prefer to have those buttons on the OTHER side of your address bar

http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/5074.image_5F00_8.png

It turns out that you can move them in IE. Just right-click in an empty spot next to your tabs, and choose Customize –> Show Stop and Refresh Buttons before Address Bar.
http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/2843.image_5F00_10.png
Voila!
http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/0513.image_5F00_12.png

Creating an Image Map in SharePoint Designer 2010
I’m not sure why this isn’t documented, but thought I’d share the solution in case someone is looking to create an image map with SharePoint Designer 2010. To set the stage, I’ll borrow shamelessly from the article showing how to do this with FrontPage 2003- Create an image map:click here
A picture with one or more clickable areas or hot spots (hot spot: An area on an object containing a hyperlink. An entire object can be a single hot spot, or an object can contain multiple hot spots. A picture with hot spots is called an image map.) is called an image map.

The automobile image map in the illustration includes three hot spots, each of which links to a separate page that provides more information about that specific feature — windshields, headlights, or wheels and tires. Or in my case a F-150!!! Yee

http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/0564.image_5F00_2.png

In SharePoint Designer 2010, all you need to do is open page and select the picture (that you want to add an image map to). At the top of the Ribbon, click on Picture Tools –> Format –> Hotspot, and then add in whatever hotspots you want (after adding the hotspot, you will be prompted for the URL you are linking to).
http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/8883.clip_5F00_image002_5F00_2.jpg

**Note: This will not work on Publishing Pages, as SharePoint Designer will only let you edit the layout of publishing pages, and not the content


PowerShell Reference on Bing


In today’s “that’s kind of cool”, it turns out you can use Bing’s Visual Search for more than visualizing the top movies in theatres or new cars, you can also use it as a reference for Powershell Cmdlets. How cool is that?

http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/4743.image_5F00_7.png
Try it here: http://www.bing.com/visualsearch?g=powershell_cmdlets

http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/1184.image_5F00_4.png

Windows Phone Developer Resources
I see over on the Windows Phone Developer Blog that the UI Design and Interaction Guide for Windows Phone 7 and Design Templates for Windows Phone 7 are now available for Developers. The UI Design guide is actually a very interesting read, even if you are not a developer. I am getting so excited for the launch of Windows Phone!
http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-20-metablogapi/0257.image_5F00_2.png
Some important resources:

Windows Phone Developer Portal
Windows Phone Developer Tools Beta

The Windows Phone Developer Tools Beta includes the following

•Visual Studio 2010 Express for Windows Phone Beta
•Windows Phone Emulator Beta
•Silverlight for Windows Phone Beta
•Microsoft Expression Blend for Windows Phone Beta
•XNA Game Studio 4.0 Beta

Windows Phone 7 Training Kit for Developers - Beta Refresh

This Training Kit will give you a jumpstart into the new Windows Phone world by providing you with a step-by-step explanation of the tools to use and some key concepts for programming Windows Phones.

Windows Phone Development Resources

This topic serves as a roadmap into the documentation that you can use to build engaging consumer applications for Windows Phones.

Code Samples for Windows Phone

This page lists a set of code samples for developers of applications for Windows Phone. You can download the samples listed here to see how the Windows Phone APIs are used in practice or as a starting place for your own applications. New samples will be added to this page periodically, so check back often and see what’s new. Yee!

http://windowsteamblog.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-53-84/7624.Design-Template-Sample-Page-Small.jpg


Custom Search