SQL Server Migration QuickStart
Hopefully a usefull resource blog for both you, the reader and myself. This is not going to be your complete resource, but rather a collection of useful tips and tricks that I stumble upon.
SharePoint, C#, SQL Server, ASP.NET, Enterprise Architecture, Business Strategy, Business Architecture, Information Architecture, Architecture Maturity, IT Strategy, IT Governance, Agile, Scrum, SDLC, Architectural Design, Togaf, BI, SOA, ESB, Software Project Management.
Monday, December 28, 2009
SQL Server Migration QuickStart
The SQL Server Migration QuickStart includes a comprehensive set of technical content including presentations, whitepapers and demos that are designed to help you get details about how to approach your customers who want to improve the return on investment from their data platforms by migrating to SQL Server from their existing Oracle or Sybase platforms.
SQL Server Migration QuickStart









SQL Server Migration QuickStart
Built-in Functions - Configuration Functions
Configuration functions return a single value pertinent to the configuration of the current SQL Server instance; these functions do not accept any parameters. The value returned from some of the configuration functions can be changed by altering one of the configuration parameters by using the SET statement, executing sp_configure, or sp_dboption. All configuration functions are nondeterministic.
Returns the value of SET DATEFIRST (with DATEFIRST, 1 stands for Monday, 2 stands for Tuesday, and so on). Example:
Current value of TIMESTAMP data type within the current database. Example:
Results:
Language id of the current language in use. You can modify the language to be used by running SET LANGUAGE statement. Example:
Results:
Results:
Results:
@@DATEFIRST Function
Returns the value of SET DATEFIRST (with DATEFIRST, 1 stands for Monday, 2 stands for Tuesday, and so on). Example:
SELECT
@
@DATEFIRST
@@DBTS Function
Current value of TIMESTAMP data type within the current database. Example:
SELECT
@
@DBTS
Results:
------------------
0x00000000000007D4
@@LANGID Function
Language id of the current language in use. You can modify the language to be used by running SET LANGUAGE statement. Example:
SET
LANGUAGE
deutsch
GO
SELECT
@
@LANGID
Results:
Die Spracheneinstellung wurde auf Deutsch geändert.
------
1
@@LANGUAGE Function
Language name of the current language in use. Example:SELECT
@
@LANGUAGE
@@LOCK_TIMEOUT Function
Lock timeout setting for current connection. You can alter the value of this function by executing SET LOCK_TIMEOUT statement by specifying maximum amount of time (in milliseconds) SQL Server should wait before canceling the statement for which locks are not available. Default value is -1 meaning that SQL Server will wait indefinitely. Example:SELECT
@
@LOCK_TIMEOUT
@@MAX_CONNECTIONS Function
Maximum connections allowed on the current instance of SQL Server. You can alter the value returned by this function by executing sp_configure. Maximum number of connections allowed on any SQL Server instance is 32767 but this number will be limited by your hardware and / or edition of SQL Server you're using. Example:SELECT
@
@MAX_CONNECTIONS
@@MAX_PRECISION Function
Precision level used by default for NUMERIC and DECIMAL data types. Default value is 38. Example:SELECT
@
@MAX_PRECISION
@@NESTLEVEL Function
Nesting level of current procedure execution (incremented each time one stored procedure executes another). Example:SELECT
@
@NESTLEVEL
@@OPTIONS Function
SET options for the current connection. The value returned by this function can be altered by executing sp_configure and changing user options. This function returns an integer representation of the binary value that stores connection settings. Example:SELECT
@
@OPTIONS
@@REMSERVER Function
Returns the name of the remote SQL Server from which a stored procedure is executed. This function is deprecated and will not be supported in future versions of SQL Server. Example:SELECT
@
@REMSERVER
@@SERVERNAME Function
Returns the name of the local SQL Server. Example:SELECT
@
@SERVERNAME
@@SERVICENAME Function
Name of the registry key under which SQL Server is running. Returns the instance name for non-default instances. For the default instance returns MSSQLSERVER. Example:SELECT
@
@SERVICENAME
Results:
-------------------
SQLSERVER2005
@@SPID Function
Current server process id (spid). Example:SELECT
@
@SPID
@@TEXTSIZE Function
Current value of TEXSIZE option. The value returned by this function can be altered by executing SET TEXTSIZE statement to specify the upper limit for the length of columns with VARCHAR(MAX), NVARCHAR(MAX), NTEXT, TEXT, IMAGE and VARBINARY(MAX) data types. Example:SELECT
@
@TEXTSIZE
@@VERSION Function
Date, version, and processor type for the current instance of SQL Server. Example:SELECT
@
@VERSION
Results:
Microsoft
SQL
Server 2005
-
9.00.1399.06
(
Intel X86
)
Oct 14 2005 00:33:37 Copyright
(
c
)
1988
-
2005 Microsoft Corporation Developer Edition
on
Windows NT 5.1
(
Build 2600: Service Pack 2
)
Wednesday, November 4, 2009
SQL Server Migrating from Other Database Products
MySQL to SQL Server 2008
In this migration guide you will learn the differences between the MySQL and SQL Server 2008 database platforms, and the steps necessary to convert a MySQL database to SQL Server.
Oracle to SQL Server 2008
This white paper explores challenges that arise when you migrate from an Oracle 7.3 database or later to SQL Server 2008. It describes the implementation differences of database objects, SQL dialects, and procedural code between the two platforms. The entire migration process using SQL Server Migration Assistant (SSMA) 2008 for Oracle is explained in depth, with a special focus on converting database objects and PL/SQL code.
Informix to SQL Server 2008
This white paper explores challenges that arise when you migrate from an Informix 11 database to SQL Server 2008. It describes the implementation differences of database objects and procedural code between the two platforms. Emulation of system functions is also discussed.
Sybase ASA to SQL Server 2008
This white paper explores challenges that arise when you migrate from a Sybase Adaptive Server Anywhere (ASA) database of version 9 or later to SQL Server 2008. It describes the implementation differences of database objects, SQL dialects, and procedural code between the two platforms.
Sybase ASE to SQL Server 2008
This white paper covers known issues for migrating Sybase Adaptive Server Enterprise database to SQL Server 2008. Instructions for handling the differences between the two platforms are included. The paper describes how SQL Server Migration Assistant, the best tool for this type of migration, can help resolve various migration issues.
In this migration guide you will learn the differences between the MySQL and SQL Server 2008 database platforms, and the steps necessary to convert a MySQL database to SQL Server.
Oracle to SQL Server 2008
This white paper explores challenges that arise when you migrate from an Oracle 7.3 database or later to SQL Server 2008. It describes the implementation differences of database objects, SQL dialects, and procedural code between the two platforms. The entire migration process using SQL Server Migration Assistant (SSMA) 2008 for Oracle is explained in depth, with a special focus on converting database objects and PL/SQL code.
Informix to SQL Server 2008
This white paper explores challenges that arise when you migrate from an Informix 11 database to SQL Server 2008. It describes the implementation differences of database objects and procedural code between the two platforms. Emulation of system functions is also discussed.
Sybase ASA to SQL Server 2008
This white paper explores challenges that arise when you migrate from a Sybase Adaptive Server Anywhere (ASA) database of version 9 or later to SQL Server 2008. It describes the implementation differences of database objects, SQL dialects, and procedural code between the two platforms.
Sybase ASE to SQL Server 2008
This white paper covers known issues for migrating Sybase Adaptive Server Enterprise database to SQL Server 2008. Instructions for handling the differences between the two platforms are included. The paper describes how SQL Server Migration Assistant, the best tool for this type of migration, can help resolve various migration issues.
Thursday, September 24, 2009
SharePoint Track in MSDN Ramp Up
Ramp Up is a free, online, community-based learning program, with a number of different tracks that will help you build your portfolio of professional development skills.The SharePoint track will immerse you in many of the developer-centric capabilities of Microsoft Office SharePoint Server.
Introduction to Web Parts
Did you know that in SharePoint you can build pages as easy as in ASP.NET – and allow end users to create dashboards? Web parts allow for creating components of Web user interface that can be reused on multiple Web pages. These are introduced in ASP.NET and built on in SharePoint where they can be added to pages by end users and managed by IT Professionals. In this topic you will learn about building simple Web parts for SharePoint and how to connect them back to SharePoint site data.
Data Lists for Developers
Did you know that SharePoint developers can work with data from lists that users get access to too? Data lists provide data storage for end users in SharePoint. End users can create lists with schema all through the SharePoint user interface and they can create, edit, and view the data. All of this data can be programmatically accessed by developers and this topic is all about that.
Programming Event Handlers
Did you know that SharePoint developers can automatically process data that your users upload via a spreadsheet? Event handlers (or event receivers) are custom code that runs on the SharePoint server in response to something that happens on the server. Event handlers can be useful for running business logic in response to data being added to the site. This topic shows how to create simple event handlers and investigates ways that event handlers can be used in SharePoint.
Workflow in SharePoint
Did you know that you can write WF workflows in SharePoint without having to worry about storage, persistence, or how to interact with the user? Workflow in SharePoint allows for implementation of processes that require interaction such as email approvals or form completion by people in your organization. This topic shows you how to create simple workflows in SharePoint using Visual Studio that involve approvals from people by email and for meeting room resource bookings with an administrator.
Silverlight and SharePoint
Did you know that you can build rich Internet applications with SharePoint? Silverlight is a new Web user interface technology from Microsoft that allows for easy implementation of animations and videos. This topic shows how a SharePoint user interface can be enhanced by using Silverlight in Web parts as part of a SharePoint site.
Visit the Ramp Up site and sign up for free.
Monday, August 24, 2009
Adding an 'Up Folder' button to a SharePoint List View Webpart
A little while ago I was asked if it was possible to add an 'Up Folder' button so that users could navigate back to the parent folder in a ListView webpart. I knew you could easily add a button to the ListView toolbar and adding the functionality to go to to the parent folder couldn't be that difficult so I said
yes. However, it wasn't as straight forward as I would have hoped.
Adding the toolbar button
Adding the button to the toolbar is pretty straight forward, you just need a feature with a CustomAction, which in turn adds the button...
<CustomAction Title="Up Folder"
Location="ViewToolbar"
Id="TheKid.UpFolder"
Sequence="100"
RegistrationType="ContentType"
RegistrationId="0x01"
Description="Navigates up a folder in a ListView Webpart"
ControlAssembly="TheKid.CustomActions.Backup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=919ab618f7ce98cf"
ControlClass="TheKid.CustomActions.Backup.Action" />
This is using a class which inherits from SPLinkButton and displays the button on the ListViewWebPart toolbar. This works no problem and we can then write some code to navigate the 'Up Folder' functionality.
NOTE: In the CustomAction above we are using RegistrationType='ContentType' and RegistrationId="0x01". This is going to register this button for every content type (essentially every list & document library), so if you want to restrict this functionality you can by changing these values.
The ListViewWebPart uses post-backs to change the folder displayed, in particular it uses a javascript function called EnterFoler to perform the postback. This function takes one parameter which is the formatted URL for the folder to which you wish to navigate. The URL should be the current URL with three parameters, the RootFolder, the Folder Content Type ID and the View Guid.
So to format the link we need to know the parent folder URL, which you would have thought you could get in code no problem...apparently not. I could not find anything which would give me access to the current folder of the ListView in order to workout the parent folder. Unfortunately I had to resort to reflection to get this information, not something I generally like doing and I wouldn't recommend it...but when needs must!!
The ListViewWebPart contains a private variable called 'rootFolder' that contains the current folder the webpart is displaying, as this was exactly what I needed I used that...
private static object GetPrivateFieldValue(object obj, string fieldName)
{
FieldInfo fi = obj.GetType().GetField(fieldName,
System.Reflection.BindingFlags.Instance
System.Reflection.BindingFlags.NonPublic);
return fi.GetValue(obj);
}
This code can be used to obtain the value of the private variable contained within the ListViewWebPart. This I used to not only get the 'rootFolder', but also a variable called 'folderCtId' which holds the content type ID (it's always been blank for me??).
With these two bits of information I was able to build the URL so that when the button was clicked it would navigate the ListView up to the parent folder...
string sCurrentUrl = HttpContext.Current.Request.Url.ToString();
if (sCurrentUrl.Contains("?")) sCurrentUrl = sCurrentUrl.Substring(0, sCurrentUrl.IndexOf("?"));
string sCTID = (string)GetPrivateFieldValue(lv, "folderCtId");
string sStart = ((sNewRootFolder == "") ? "?" : SPHttpUtility.EcmaScriptStringLiteralEncode(sCurrentUrl
+ "?RootFolder=" + sNewRootFolder) + "&");
sStart = SPHttpUtility.EcmaScriptStringLiteralEncode(sCurrentUrl + "?RootFolder=" + sNewRootFolder) + "&";
string sNavigateUrl = sStart
+ "FolderCTID=" + SPHttpUtility.EcmaScriptStringLiteralEncode(sCTID)
+ "&View=" + SPHttpUtility.EcmaScriptStringLiteralEncode(lv.ViewGuid)
+ "&Key=" + lv.StorageKey.ToString();
return "javascript:EnterFolder('" + sNavigateUrl + "');return false";
Here you see the URL being constructed with the required QueryString parameters. You will also see that I have added a 'Key' parameter, this was to ensure the button would work on a page with multiple ListViewWebParts. This 'Up Folder' button will work even when there are multiple webparts for the same document library...
yes. However, it wasn't as straight forward as I would have hoped.
Adding the toolbar button
Adding the button to the toolbar is pretty straight forward, you just need a feature with a CustomAction, which in turn adds the button...
<CustomAction Title="Up Folder"
Location="ViewToolbar"
Id="TheKid.UpFolder"
Sequence="100"
RegistrationType="ContentType"
RegistrationId="0x01"
Description="Navigates up a folder in a ListView Webpart"
ControlAssembly="TheKid.CustomActions.Backup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=919ab618f7ce98cf"
ControlClass="TheKid.CustomActions.Backup.Action" />
This is using a class which inherits from SPLinkButton and displays the button on the ListViewWebPart toolbar. This works no problem and we can then write some code to navigate the 'Up Folder' functionality.
NOTE: In the CustomAction above we are using RegistrationType='ContentType' and RegistrationId="0x01". This is going to register this button for every content type (essentially every list & document library), so if you want to restrict this functionality you can by changing these values.
Formatting the link
The ListViewWebPart uses post-backs to change the folder displayed, in particular it uses a javascript function called EnterFoler to perform the postback. This function takes one parameter which is the formatted URL for the folder to which you wish to navigate. The URL should be the current URL with three parameters, the RootFolder, the Folder Content Type ID and the View Guid.
So to format the link we need to know the parent folder URL, which you would have thought you could get in code no problem...apparently not. I could not find anything which would give me access to the current folder of the ListView in order to workout the parent folder. Unfortunately I had to resort to reflection to get this information, not something I generally like doing and I wouldn't recommend it...but when needs must!!
The ListViewWebPart contains a private variable called 'rootFolder' that contains the current folder the webpart is displaying, as this was exactly what I needed I used that...
private static object GetPrivateFieldValue(object obj, string fieldName)
{
FieldInfo fi = obj.GetType().GetField(fieldName,
System.Reflection.BindingFlags.Instance
System.Reflection.BindingFlags.NonPublic);
return fi.GetValue(obj);
}
This code can be used to obtain the value of the private variable contained within the ListViewWebPart. This I used to not only get the 'rootFolder', but also a variable called 'folderCtId' which holds the content type ID (it's always been blank for me??).
With these two bits of information I was able to build the URL so that when the button was clicked it would navigate the ListView up to the parent folder...
string sCurrentUrl = HttpContext.Current.Request.Url.ToString();
if (sCurrentUrl.Contains("?")) sCurrentUrl = sCurrentUrl.Substring(0, sCurrentUrl.IndexOf("?"));
string sCTID = (string)GetPrivateFieldValue(lv, "folderCtId");
string sStart = ((sNewRootFolder == "") ? "?" : SPHttpUtility.EcmaScriptStringLiteralEncode(sCurrentUrl
+ "?RootFolder=" + sNewRootFolder) + "&");
sStart = SPHttpUtility.EcmaScriptStringLiteralEncode(sCurrentUrl + "?RootFolder=" + sNewRootFolder) + "&";
string sNavigateUrl = sStart
+ "FolderCTID=" + SPHttpUtility.EcmaScriptStringLiteralEncode(sCTID)
+ "&View=" + SPHttpUtility.EcmaScriptStringLiteralEncode(lv.ViewGuid)
+ "&Key=" + lv.StorageKey.ToString();
return "javascript:EnterFolder('" + sNavigateUrl + "');return false";
Here you see the URL being constructed with the required QueryString parameters. You will also see that I have added a 'Key' parameter, this was to ensure the button would work on a page with multiple ListViewWebParts. This 'Up Folder' button will work even when there are multiple webparts for the same document library...
Sunday, August 23, 2009
SQL Server - Backup - Restore - Mirrored
1.Conventional Backup and Restore
2.Spilt File Backup and Restore
3.Mirror File Backup
4.Understanding FORMAT Clause
5.Miscellaneous details about Backup and Restore
Note: Before running all the examples, make sure that you have the required folders created on your drive. It is mandatory to create Backup folders prior to creating backup files using SQL Server.
In our example, we will require the following folders:
- C:\Backup\SingleFile
- C:\Backup\MultiFile
- C:\Backup\MirrorFile
Conventional and Split File Backup and Restore
Just a day before working on one of the projects, I had to take a backup of one database of 14 GB. My hard drive lacked sufficient space at that moment. Fortunately, I had two 8 GB USB Drives with me. Now, the question was how to take a backup in two equal sizes, each of 7 GB, so I can fit them on each USB drive. Well, conventional backup takes one large backup in one file. However, SQL Server backup command can take backups in two or more split parts.
Let us see an example of a conventional one-file backup using the AdventureWorks database.
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backup\SingleFile\AdventureWorks.bak'
GO
The result is displayed below. Here, the backup is taken in a single file.
Now, let us see how we can split one database into two different database files. This method is very similar to taking a single-file backup. By simply adding an additional DISK option we can split the files backup files.
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backup\MultiFile\AdventureWorks1.bak',
DISK = 'C:\Backup\MultiFile\AdventureWorks2.bak',
DISK = 'C:\Backup\MultiFile\AdventureWorks3.bak'
GO
In the previous example, we can clearly see that backup is split into three equal parts of the original backup file size.
Restoring a backup from a single-file backup is quite easy. Let us go over an example where we restore the AdventureWorks database from a single backup file.
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backup\SingleFile\AdventureWorks.bak'
GO
Running the above script will give a successful message.
Now let us see an example where we restore a database from a split file. This method is very similar to restoring a database from a single file; just add an additional DISK option.
RESTORE DATABASE [AdventureWorks]
FROM DISK = N'C:\Backup\MultiFile\AdventureWorks1.bak',
DISK = N'C:\Backup\MultiFile\AdventureWorks2.bak',
DISK = N'C:\Backup\MultiFile\AdventureWorks3.bak'
GO
Running the above script will give a successful message as shown in the image below.
Make sure that while restoring database, the database is not in use, otherwise it will give an error of database in use. In the event of an error taking place, close all the connections and re-attempt to restore the database.
Mirror Backup of the file
It is quite a common practice to create an exact copy of the backup and store it to several places to deal with any catastrophes which might affect the place where the database is stored. Once a full backup is accomplished DBAs generally copy the database to another location in their network using a third party tools like robocopy or native DOS commands like xcopy.
In SQL Server 2005 and later versions, there is a Mirror command that makes a copy of the database backup to different locations while taking the original backup. The maximum limit of additional locations that can be specified with MIRROR clause is 3.
Mirrored backup can be taken in local computer system as well as in a local network. Let us now see two examples of mirror backup.
Example 1. Single File Backup to Multiple Locations using Mirror
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backup\SingleFile\AdventureWorks.bak'
MIRROR TO DISK = 'C:\Backup\MirrorFile\AdventureWorks.bak'
WITH FORMAT
GO
If this command is being run for the first time, it is mandatory to use the WITH FORMAT clause; but for sub sequential runs it is not required. WITH FORMAT reinitializes the backup.
When checked in both the folders ‘SingleFile’ and ‘MirrorFile’, backup files are exactly the same files. As mentioned earlier, four mirror backup can be specified in total.
Example 2. Split File Backup to Multiple Locations using Mirror
We have earlier seen an example where we can have multiple split files of large database backup files. SQL Server Mirror functionality also supports backup of the split files.
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backup\MultiFile\AdventureWorks1.bak',
DISK = 'C:\Backup\MultiFile\AdventureWorks2.bak',
DISK = 'C:\Backup\MultiFile\AdventureWorks3.bak'
MIRROR TO DISK = 'C:\Backup\MirrorFile\AdventureWorks1.bak',
DISK = 'C:\Backup\MirrorFile\AdventureWorks2.bak',
DISK = 'C:\Backup\MirrorFile\AdventureWorks3.bak'
WITH FORMAT
GO
All the mirror sets will need the same number of DISK clauses as the original backup media.
Mirrored database backup can be restored using the same method as the original backup. Mirrored backup is in fact an exact replica of the original backup.
Understanding the FORMAT Clause
The FORMAT clause is used to reinitiate a backup media. Although it is a very useful clause it should be used with caution. When the clause is used it erases everything present in backup media. I have noticed that some DBAs are confused while taking a backup on a local disk where they have SQL Server installed. They have a misconception that if the format command is used, it will erase the complete disk including the SQL Server installation. However, the fact is that SQL Server format clause is quite different from OS format. The effect of SQL Server format clause is limited to a folder or path specified in the DISK clause.
In our example, when the FORMAT clause is specified, it will format only folders like C:\Backup\MultiFile\ or C:\Backup\SingleFile.
Related Errors
Error 3010
Invalid backup mirror specification. All mirrors must have the same number of members.
This error can show up while taking a mirrored database backup along with a regular backup; and DISK and MIRROR TO DISK do not match accurately.
The following image demonstrates how the error takes place.
To fix the error, match the members of DISK and MIRROR TO DISK to each other.
Error 3215
Use WITH FORMAT to create a new mirrored backup set
This error can spring up when a new backup is initiated and an existing media header needs to be reset for all headers on the backup media. If there is already a backup on the media, it will display this error and prevent backup from being overwritten. To fix this error, use WITH FORMAT as shown in an earlier example.
Miscellaneous details about Backup and Restore
When no options are specified, BACKUP DATABASE takes only full backups. Before taking the first log backup, full database backup is necessary to take one full backup. Backups created on later versions of SQL Server cannot be restored to earlier versions of SQL Server. The user needs permissions of sysadmin or db_owner or db_backupoperator roles to perform backup operation.
Tuesday, May 12, 2009
SharePoint 2007 - Great Technical Articles
Monday, April 27, 2009
Dummy SSL certificate
Install iis60rkt.exe (IIS 6.0 Resource Kit Tools), which is a free download from Microsoft. You can use this link: http://www.microsoft.com/downloads/details.aspx?familyid=56FC92EE-A71A-4C73-B628-ADE629C89499&displaylang=en or Search for iis60rkt.exe. The only requirement is that your machine should have a version of IIS.
Go to Start -> Programs -> IIS Resources -> IISCertDeploy.vbs -> IISCertDeploy.vbs
A command window will open outlining the various options. I installed a cert on my website by typing in:
If you type CN= then when you browse the site, you won't get this as a warning:
Now open the website properties and go to directory security, you will see 'View Certificate' Enabled.
When you view the certificate, it will show a red icon. That is because the certificate has not been added to the trusted list yet.
To add it in the trusted, go to Start -> Run -> Type mmc
Go to File and select Add/Remove snap In
Click on Add and select Certificates

(Full Size Image)
Select Computer Account and click on Next
Click on Finish, then close for the "Add Standalone Snap-In" window and then OK
Expand Certificates -> Personal -> Certificates

(Full Size Image)
Right click on ICE and select Copy
Then Expand Trusted Root Certificate (right under it) -> Certificates
Right Click and Select Paste.
Now if you want to export this to another machine, then right click on the cert name under Certificates -> Personal -> Certificates. Right click on it, All Tasks -> Export

(Full Size Image)
Click on Next, then on the next screen, select Export Private Key as well
Click on Next, then Next again and then input a password that you will remember. I used demo1234. Then put in a path where to export it to. I exported it locally and then copied it over onto the server where I needed it installed.
On the actual server:
Open the website properties, go to Directory Security and click on Server Certificate.
Click Next and then Select Import from a pfx file
Click on Next. Enter the path and file name and check the box to make the cert exportable.
Click on Next
Type in the same password and click on Next and then again on Next
Repeat the same process to add this cert into the trusted collection.
Go to Start -> Programs -> IIS Resources -> IISCertDeploy.vbs -> IISCertDeploy.vbs
A command window will open outlining the various options. I installed a cert on my website by typing in:
selfssl /N:CN=ICE /K:1024 /V:3650
Now open the website properties and go to directory security, you will see 'View Certificate' Enabled.
When you view the certificate, it will show a red icon. That is because the certificate has not been added to the trusted list yet.
To add it in the trusted, go to Start -> Run -> Type mmc
Go to File and select Add/Remove snap In
Click on Add and select Certificates
(Full Size Image)
Select Computer Account and click on Next
Click on Finish, then close for the "Add Standalone Snap-In" window and then OK
Expand Certificates -> Personal -> Certificates
(Full Size Image)
Right click on ICE and select Copy
Then Expand Trusted Root Certificate (right under it) -> Certificates
Right Click and Select Paste.
Now if you want to export this to another machine, then right click on the cert name under Certificates -> Personal -> Certificates. Right click on it, All Tasks -> Export
(Full Size Image)
Click on Next, then on the next screen, select Export Private Key as well
Click on Next, then Next again and then input a password that you will remember. I used demo1234. Then put in a path where to export it to. I exported it locally and then copied it over onto the server where I needed it installed.
On the actual server:
Open the website properties, go to Directory Security and click on Server Certificate.
Click Next and then Select Import from a pfx file
Click on Next. Enter the path and file name and check the box to make the cert exportable.
Click on Next
Type in the same password and click on Next and then again on Next
Repeat the same process to add this cert into the trusted collection.
Sunday, March 8, 2009
LINQ to SQL vs. LINQ to Entities
There's a great paper on MSDN that describes the similarities and differences in LINQ to SQL and LINQ to Entities from the Entity Framework.
A lot of people are really fired up about the simplicity that LINQ brings to the table. What is confusing is how LINQ to SQL conflicts and overlaps with what LINQ to Entities offers. From the article referenced above, the key takeaways are summarized below.
LINQ to SQL is good when your solution is targeted classes are going to be targeted at SQL Server and you have a 1:1 relationship between the domain model and database schema.
Use LINQ to Entities as an ORM solution where your classes may be 1:1 with the database or may have a very different structure from the database schema and targets. LINQ to Entities will also good for 3rd party database solutions.
Professional ADO.NET 3.5 with LINQ and the Entity Framework (Wrox Programmer to Programmer)
Pro LINQ Object Relational Mapping in C# 2008
A lot of people are really fired up about the simplicity that LINQ brings to the table. What is confusing is how LINQ to SQL conflicts and overlaps with what LINQ to Entities offers. From the article referenced above, the key takeaways are summarized below.
LINQ to SQL is good when your solution is targeted classes are going to be targeted at SQL Server and you have a 1:1 relationship between the domain model and database schema.
Use LINQ to Entities as an ORM solution where your classes may be 1:1 with the database or may have a very different structure from the database schema and targets. LINQ to Entities will also good for 3rd party database solutions.
Professional ADO.NET 3.5 with LINQ and the Entity Framework (Wrox Programmer to Programmer)
Pro LINQ Object Relational Mapping in C# 2008
Thursday, February 5, 2009
SharePoint 2007 - links and resources
This page contains links and resources specific to Web Content Management (WCM). WCM part of a larger Enterprise Content Management (ECM) strategy that's part of Microsoft Office SharePoint Server (MOSS) 2007. MOSS is built on top of Windows SharePoint Services (WSS) v3.
Microsoft's SharePoint product stack is now so vast, that WCM specific links could easily get lost in the sea of resources. Therefore this page will only contain links specific to WCM and not MOSS or WSS as a whole. If you're looking for links for MOSS or WSS, I've included links to some other link-fests in the General SharePoint Information section within this page.Some general SharePoint topics are listed here, such as content types and workflow, when I felt they would be of enough interest for WCM site owners, designers, and developers.
Categories
Accessibility
[back to top]
Authentication
[back to top]
Blogs
[back to top]
Books
[back to top]
Code Sample
[back to top]
Community
[back to top]
Community - Mailing List
[back to top]
Community - Newsgroup
[back to top]
Community - Online Forum
[back to top]
Content Deployment
[back to top]
Content Types
[back to top]
Development Practices, Tips & Utilities
[back to top]
Document Converters
[back to top]
Documentation & Reference (official)
[back to top]
Documentation & Reference (unofficial)
[back to top]
Extensibility
[back to top]
Features
[back to top]
Field Controls
[back to top]
General SharePoint Information
[back to top]
How To's
[back to top]
InfoPath
[back to top]
Installation, Setup & Configuration
[back to top]
Master Pages & Page Layouts
[back to top]
Migration & Upgrade
[back to top]
Navigation
[back to top]
Performance
[back to top]
Permissions & Security
[back to top]
Product Information
[back to top]
Search
[back to top]
SharePoint Designer
[back to top]
Training & Education
[back to top]
UI Customization
[back to top]
Unclassified
[back to top]
Utilities
[back to top]
Variations & Localization
[back to top]
WCM Information
[back to top]
WCM Websites
[back to top]
Web Parts
[back to top]
Web Part (Content Query Web Part)
[back to top]
Web Parts (3rd party, custom, downloadable, etc)
[back to top]
Workflow
[back to top]