Category Archives: Development

SQL Server Version History

By default you can’t restore a sql backup that was taken from a higher version sql server. Otherwise you might get following error when doing restore.

System.Data.SqlClient.SqlError: The database was backed up on a server running version 10.50.1600. That version is incompatible with this server, which is running version 10.00.2714. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server

SQL Server version can be checked by running following sql query

SELECT @@Version

SQL Server Version History Tracking Table

Version SQL Server Release
12.00.2000.8 SQL Server 2014 RTM
11.00.3000 SQL Server 2012 SP1
11.00.2100.6 SQL Server 2012 RTM
10.50.4000 SQL Server 2008 R2 SP2
10.50.2500 SQL Server 2008 R2 SP1
10.5.1660.1 SQL Server 2008 R2 RTM
10.00.5500 SQL Server 2008 SP3
10.00.4000 SQL Server 2008 SP2
10.00.2531 SQL Server 2008 SP1
10.00.1600.22 SQL Server 2008 RTM
9.00.5000 SQL Server 2005 SP4
9.00.4035 SQL Server 2005 SP3
9.00.3042 SQL Server 2005 SP2
9.00.2047 SQL Server 2005 SP1
9.00.1399.06 SQL Server 2005 RTM
8.00.2039 SQL Server 2000 SP4
8.00.0760 SQL Server 2000 SP3
8.00.0534 SQL Server 2000 SP2
8.00.0384 SQL Server 2000 SP1
8.00.0194 SQL Server 2000 RTM

Configure PowerShell to use DotNet 4.0

You might get following error when you load a snap-in that is written by DotNet 4.0.

This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

This is because by default, PowerShell uses DotNet version 2.0 CLR. To use powershell load DotNet 4.0 assemblies, the following settings need to be added in PowerShell.exe.config under C:WindowsSysWOW64WindowsPowerShellv1.0.

<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0.30319"/>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

Note:

  1. Above applies to 64bit windows server 2008 r2. On a 32 bit machine, PowerShell.exe.config can be found at C:windowsSystem32WindowsPowerShellv1.0
  2. Create PowerShell.exe.config if this file is not found.

Free ebook: Programming Windows Phone 7

Microsoft are now giving away the eBook Programming Windows Phone 7 by Charles Petzold.  For detail information of this ebook, view http://blogs.msdn.com/b/microsoft_press/archive/2010/10/28/free-ebook-programming-windows-phone-7-by-charles-petzold.aspx

You can download a PDF here (38.6 MB).

And you can download the ebook’s sample code here (5.03 MB).

untitled

[ODBC Driver Manager] Data source name not found and no default driver specified

If you run osql.exe utility on server that does not have SQL server installed, you might get following error: [ODBC Driver Manager] Data source name not found and no default driver specified.

This is because osql utility uses ODBC API to communicate to SQL server and SQL ODBC driver is not installed. To fix this, simple download and install SQL Native Client. For example, if you are using the osql.exe from the SQL 2008 (10.0), you should install the SQL Native Client 10.0 from: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=C6C3E9EF-BA29-4A43-8D69-A2BED18FE73C

Grant Permission to DefaultAppPool Identity

After upgrading web applications to IIS 7.5 on Windows Server 2008 R2, you might get following error.

Access to the path ‘d:sitecache.txt’ is denied.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.UnauthorizedAccessException: Access to the path ‘d:sitecache.txt’ is denied.
ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate=”true”/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.
To grant ASP.NET access to a file, right-click the file in Explorer, choose “Properties” and select the Security tab. Click “Add” to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Continue reading

Make IIS 7.5 application pools run as NETWORK SERVICE

There is a break change in IIS 7.5 on Windows 7 and Windows Server 2008 R2. The default identity for running an application pool is "ApplicationPoolIdentity".  If you have a web application developed against application pools running with NETWORK SERVICE on IIS6/7, it might break after migrated to IIS 7.5 due to default application pool identity change.

Continue reading

Mixed mode assembly Error After Upgrading to DotNet 4.0

After upgrading existing DotNet 2.0 or 3.5 application to DotNet 4.0, you might see following error message

Mixed mode assembly is built against version ‘v2.0.50727’ of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

To fix this issue, put a config file next to your exe called <exename>.exe.config with the following content:

<configuration>
<startup useLegacyV2RuntimeActivationPolicy=”true”>
<supportedRuntime version=”v4.0″/>
</startup>
</configuration>

Or if your exe already has config file, you can just append <startup> element section. To know more detail, check out Mark Miller’s post What is useLegacyV2RuntimeActivationPolicy for?

Update – 2011/11/15.

Just hit a similar issue today when I referrence SMO in a DotNet 4 Executable

Microsoft.SqlServer.Management.Dac.DacException: Unable to install DacInstance. Please verify the components of the application. —> System.IO.FileLoadException: Mixed mode assembly is built against version ‘v2.0.50727’ of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

The solution is same – in app.config file of the executable, add the following settings:

<configuration>
<startup useLegacyV2RuntimeActivationPolicy=”true”>
<supportedRuntime version=”v4.0″/>
</startup>
</configuration>

Perl Replace String in File

This code snippet demonstrates how to replace string in file using perl. This perl script takes in an input file, replaces the all string foo with bar.

my $file = $ARGV[0];
my $filetmp = "$ARGV[0].tmp";
open (INPUT, "< $file") or die("Unable to open $file");
open (TMP, "> $filetmp") or die("Unable to open $filetmp");
while(<INPUT>) {
    if(/foo/) {
        s/foo/bar/;   # replace foo with bar   
    }
    print TMP $_;
}
close(INPUT);
close(TMP);
rename $filetmp, $file;

Could not load type System.ServiceModel.Activation.HttpModule

If you install DotNet framework 4.0 on Windows Server 2008 or R2 after enabling IIS,  you might see following error when browse your application site made of ASP.NET 4.0 (or run on ASP.NET 4.0 application pool).

Could not load type ‘System.ServiceModel.Activation.HttpModule’ from assembly ‘System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.TypeLoadException: Could not load type ‘System.ServiceModel.Activation.HttpModule’ from assembly ‘System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.

Cause & Solution

If IIS is enabled after DotNet 4 installation then ASP.NET is not registered with IIS. You will see the error if your site is targeting ASP.NET 4. To resolve this issue, run the following from elevated command line to register ASP.NET 4:

aspnet_regiis.exe /iru

The aspnet_regiis.exe file can be found in either

  • %windir%Microsoft.NETFrameworkv4.0.30319
  • %windir%Microsoft.NETFramework64v4.0.30319 (on a 64-bit machine)

More info for ASP.NET IIS Registration Tool (Aspnet_regiis.exe) can be found at http://msdn.microsoft.com/en-us/library/k6h9cz8h.aspx