Microsoft SQL Server 2012 support

Upgraded: Database scripts install_db.sql and upload_db.sql in order to support MSSQL2012
Upgraded: Installer to allow setup WebsitePanel with MSSQL2012
Added: MsSqlServer2012.cs
This commit is contained in:
Alejandro 2012-05-12 14:17:46 -04:00
parent e294a3db8a
commit bb347537af
24 changed files with 1179 additions and 18 deletions

View file

@ -1,4 +1,4 @@
<?xml version="1.0" standalone="yes"?>
<?xml version="1.0" standalone="yes"?>
<Resources xmlns="http://tempuri.org/Resources.xsd">
<Resource>
<File>App_GlobalResources\Ecommerce_Modules.ascx.resx</File>
@ -3334,6 +3334,16 @@
<Key>ModuleTitle.Sql2008Users</Key>
<DefaultValue>SQL Server 2008 Logins</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_Modules.ascx.resx</File>
<Key>ModuleTitle.Sql2012Databases</Key>
<DefaultValue>SQL Server 2012 Databases</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_Modules.ascx.resx</File>
<Key>ModuleTitle.Sql2012Users</Key>
<DefaultValue>SQL Server 2012 Logins</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_Modules.ascx.resx</File>
<Key>ModuleTitle.SQLDatabaseProperties</Key>
@ -3994,6 +4004,16 @@
<Key>PageTitle.SpaceMsSql2008</Key>
<DefaultValue>{user} - {space} - SQL Server 2008</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_Pages.ascx.resx</File>
<Key>PageName.SpaceMsSql2012</Key>
<DefaultValue>SQL Server 2012</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_Pages.ascx.resx</File>
<Key>PageTitle.SpaceMsSql2012</Key>
<DefaultValue>{user} - {space} - SQL Server 2012</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_Pages.ascx.resx</File>
<Key>PageTitle.SpaceMsSql2005</Key>
@ -7094,6 +7114,36 @@
<Key>Quota.MsSQL2008.Users</Key>
<DefaultValue>Users</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>Quota.MsSQL2012.Backup</Key>
<DefaultValue>Database Backups</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>Quota.MsSQL2012.Databases</Key>
<DefaultValue>Databases</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>Quota.MsSQL2012.MaxDatabaseSize</Key>
<DefaultValue>Max Database Size, MB</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>Quota.MsSQL2012.Restore</Key>
<DefaultValue>Database Restores</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>Quota.MsSQL2012.Truncate</Key>
<DefaultValue>Database Truncate</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>Quota.MsSQL2012.Users</Key>
<DefaultValue>Users</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>Quota.MySQL5.Backup</Key>
@ -7129,6 +7179,11 @@
<Key>ResourceGroup.MsSQL2008</Key>
<DefaultValue>SQL Server 2008</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>ResourceGroup.MsSQL2012</Key>
<DefaultValue>SQL Server 2012</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>ResourceGroup.MySQL5</Key>
@ -7449,6 +7504,16 @@
<Key>ServiceItemType.MsSQL2008User</Key>
<DefaultValue>MS SQL 2008 User</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>ServiceItemType.MsSQL2012Database</Key>
<DefaultValue>MS SQL 2012 Database</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>ServiceItemType.MsSQL2012User</Key>
<DefaultValue>MS SQL 2012 User</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>ServiceItemType.MySQL4Database</Key>
@ -9300,6 +9365,11 @@
<Key>Quota.MsSQL2008.MaxLogSize</Key>
<DefaultValue>Max Log Size, MB</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>Quota.MsSQL2012.MaxLogSize</Key>
<DefaultValue>Max Log Size, MB</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>Error.EXCHANGE_UPDATE_MAILBOX_PERMISSIONS</Key>
@ -11875,6 +11945,11 @@
<Key>ReportResourceGroup.MsSQL2008</Key>
<DefaultValue>SQL Server 2008</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>ReportResourceGroup.MsSQL2012</Key>
<DefaultValue>SQL Server 2012</DefaultValue>
</Resource>
<Resource>
<File>App_GlobalResources\WebsitePanel_SharedResources.ascx.resx</File>
<Key>WebAppGallery.ApplicationInstallationError</Key>
@ -15762,6 +15837,11 @@ for your installation of ResellerClub .NET API Kit.&lt;/div&gt;</DefaultValue>
<Key>lclMSSQL2008Resources.Text</Key>
<DefaultValue>Microsoft SQL 2008 Quotas</DefaultValue>
</Resource>
<Resource>
<File>DesktopModules\Ecommerce\UserControls\App_LocalResources\HostingPlanQuotas.ascx.resx</File>
<Key>lclMSSQL2012Resources.Text</Key>
<DefaultValue>Microsoft SQL 2012 Quotas</DefaultValue>
</Resource>
<Resource>
<File>DesktopModules\Ecommerce\UserControls\App_LocalResources\LoginUserAccount.ascx.resx</File>
<Key>lclPassword.Text</Key>

View file

@ -38,6 +38,7 @@ namespace WebsitePanel.EnterpriseServer
public const string MySql4 = "MySQL4";
public const string MsSql2005 = "MsSQL2005";
public const string MsSql2008 = "MsSQL2008";
public const string MsSql2012 = "MsSQL2012";
public const string MySql5 = "MySQL5";
public const string Dns = "DNS";
public const string Statistics = "Statistics";

View file

@ -1875,6 +1875,7 @@ namespace WebsitePanel.EnterpriseServer
SetSqlServerExternalAddress(packageId, items, ResourceGroups.MsSql2000);
SetSqlServerExternalAddress(packageId, items, ResourceGroups.MsSql2005);
SetSqlServerExternalAddress(packageId, items, ResourceGroups.MsSql2008);
SetSqlServerExternalAddress(packageId, items, ResourceGroups.MsSql2012);
SetSqlServerExternalAddress(packageId, items, ResourceGroups.MySql4);
SetSqlServerExternalAddress(packageId, items, ResourceGroups.MySql5);

View file

@ -169,10 +169,11 @@ namespace WebsitePanel.EnterpriseServer
//{
// appsFilter.AddRange(SupportedAppDependencies.PHP_SCRIPTING);
//}
//// if either MSSQL 2000, 2005 or 2008 enabled in the hosting plan
//// if either MSSQL 2000, 2005, 2008 or 2012 enabled in the hosting plan
//if (context.Groups.ContainsKey(ResourceGroups.MsSql2000) ||
// context.Groups.ContainsKey(ResourceGroups.MsSql2005) ||
// context.Groups.ContainsKey(ResourceGroups.MsSql2008))
// context.Groups.ContainsKey(ResourceGroups.MsSql2008) ||
// context.Groups.ContainsKey(ResourceGroups.MsSql2012))
//{
// appsFilter.AddRange(SupportedAppDependencies.MSSQL_DATABASE);
//}
@ -342,6 +343,7 @@ namespace WebsitePanel.EnterpriseServer
!(context.Groups.ContainsKey(ResourceGroups.MsSql2000)
|| context.Groups.ContainsKey(ResourceGroups.MsSql2005)
|| context.Groups.ContainsKey(ResourceGroups.MsSql2008)
|| context.Groups.ContainsKey(ResourceGroups.MsSql2012)
|| context.Groups.ContainsKey(ResourceGroups.MySql4)
|| context.Groups.ContainsKey(ResourceGroups.MySql5)))
result.ErrorCodes.Add(GalleryErrors.DatabaseRequired);
@ -350,7 +352,8 @@ namespace WebsitePanel.EnterpriseServer
else if ((app.WellKnownDependencies & GalleryApplicationWellKnownDependency.SQL) == GalleryApplicationWellKnownDependency.SQL
&& !(context.Groups.ContainsKey(ResourceGroups.MsSql2000)
|| context.Groups.ContainsKey(ResourceGroups.MsSql2005)
|| context.Groups.ContainsKey(ResourceGroups.MsSql2008)))
|| context.Groups.ContainsKey(ResourceGroups.MsSql2008)
|| context.Groups.ContainsKey(ResourceGroups.MsSql2012)))
result.ErrorCodes.Add(GalleryErrors.SQLRequired);
// MySQL

View file

@ -0,0 +1,47 @@
// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
namespace WebsitePanel.Providers.Database
{
public class MsSqlServer2012 : MsSqlServer2005
{
public override bool IsInstalled()
{
return CheckVersion("11.");
}
public override void TruncateDatabase(string databaseName)
{
SqlDatabase database = GetDatabase(databaseName);
ExecuteNonQuery(String.Format(@"USE [{0}];DBCC SHRINKFILE ('{1}', 1);",
databaseName, database.LogName));
}
}
}

View file

@ -65,6 +65,7 @@
</Compile>
<Compile Include="MsSqlServer2005.cs" />
<Compile Include="MsSqlServer2008.cs" />
<Compile Include="MsSqlServer2012.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="MsSqlServer.cs" />
</ItemGroup>

View file

@ -55,6 +55,7 @@
<MenuItem pageID="SpaceMsSql2000" resourceGroup="MsSQL2000"/>
<MenuItem pageID="SpaceMsSql2005" resourceGroup="MsSQL2005"/>
<MenuItem pageID="SpaceMsSql2008" resourceGroup="MsSQL2008"/>
<MenuItem pageID="SpaceMsSql2012" resourceGroup="MsSQL2012"/>
<MenuItem pageID="SpaceMySql4" resourceGroup="MySQL4"/>
<MenuItem pageID="SpaceMySql5" resourceGroup="MySQL5"/>
</MenuItems>
@ -97,6 +98,7 @@
<MenuItem pageID="SpaceMsSql2000" resourceGroup="MsSQL2000"/>
<MenuItem pageID="SpaceMsSql2005" resourceGroup="MsSQL2005"/>
<MenuItem pageID="SpaceMsSql2008" resourceGroup="MsSQL2008"/>
<MenuItem pageID="SpaceMsSql2012" resourceGroup="MsSQL2012"/>
<MenuItem pageID="SpaceMySql4" resourceGroup="MySQL4"/>
<MenuItem pageID="SpaceMySql5" resourceGroup="MySQL5"/>
<MenuItem pageID="SpaceOdbc" resourceGroup="OS" quota="OS.ODBC"/>

View file

@ -340,6 +340,26 @@
</Module>
</Content>
</Page>
<Page name="SpaceMsSql2012" roles="Administrator,Reseller,User" hidden="True">
<Content id="LeftPane">
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
<ModuleData ref="SpaceMenu"/>
</Module>
</Content>
<Content id="ContentPane">
<Module moduleDefinitionID="SqlDatabases" title="Sql2012Databases" icon="mssql_48.png">
<Settings>
<Add name="GroupName" value="MsSQL2012" />
</Settings>
</Module>
<Module moduleDefinitionID="SqlUsers" title="Sql2012Users" icon="db_user_48.png">
<Settings>
<Add name="GroupName" value="MsSQL2012" />
</Settings>
</Module>
</Content>
</Page>
<Page name="SpaceMySql4" roles="Administrator,Reseller,User" hidden="True">
<Content id="LeftPane">

View file

@ -522,6 +522,12 @@
<data name="ModuleTitle.Sql2008Users" xml:space="preserve">
<value>SQL Server 2008 Logins</value>
</data>
<data name="ModuleTitle.Sql2012Databases" xml:space="preserve">
<value>SQL Server 2012 Databases</value>
</data>
<data name="ModuleTitle.Sql2012Users" xml:space="preserve">
<value>SQL Server 2012 Logins</value>
</data>
<data name="ModuleTitle.SQLDatabaseProperties" xml:space="preserve">
<value>SQL Database Properties</value>
</data>

View file

@ -282,6 +282,12 @@
<data name="PageTitle.SpaceMsSql2008" xml:space="preserve">
<value>{user} - {space} - SQL Server 2008</value>
</data>
<data name="PageName.SpaceMsSql2012" xml:space="preserve">
<value>SQL Server 2012</value>
</data>
<data name="PageTitle.SpaceMsSql2012" xml:space="preserve">
<value>{user} - {space} - SQL Server 2012</value>
</data>
<data name="PageTitle.SpaceMsSql2005" xml:space="preserve">
<value>{user} - {space} - SQL Server 2005</value>
</data>

View file

@ -1809,6 +1809,24 @@
<data name="Quota.MsSQL2008.Users" xml:space="preserve">
<value>Users</value>
</data>
<data name="Quota.MsSQL2012.Backup" xml:space="preserve">
<value>Database Backups</value>
</data>
<data name="Quota.MsSQL2012.Databases" xml:space="preserve">
<value>Databases</value>
</data>
<data name="Quota.MsSQL2012.MaxDatabaseSize" xml:space="preserve">
<value>Max Database Size, MB</value>
</data>
<data name="Quota.MsSQL2012.Restore" xml:space="preserve">
<value>Database Restores</value>
</data>
<data name="Quota.MsSQL2012.Truncate" xml:space="preserve">
<value>Database Truncate</value>
</data>
<data name="Quota.MsSQL2012.Users" xml:space="preserve">
<value>Users</value>
</data>
<data name="Quota.MySQL5.Backup" xml:space="preserve">
<value>Database Backups</value>
</data>
@ -1848,6 +1866,9 @@
<data name="ResourceGroup.MsSQL2008" xml:space="preserve">
<value>SQL Server 2008</value>
</data>
<data name="ResourceGroup.MsSQL2012" xml:space="preserve">
<value>SQL Server 2012</value>
</data>
<data name="ResourceGroup.MySQL5" xml:space="preserve">
<value>MySQL 5</value>
</data>
@ -2040,6 +2061,12 @@
<data name="ServiceItemType.MsSQL2008User" xml:space="preserve">
<value>MS SQL 2008 User</value>
</data>
<data name="ServiceItemType.MsSQL2012Database" xml:space="preserve">
<value>MS SQL 2012 Database</value>
</data>
<data name="ServiceItemType.MsSQL2012User" xml:space="preserve">
<value>MS SQL 2012 User</value>
</data>
<data name="ServiceItemType.MySQL4Database" xml:space="preserve">
<value>MySQL 4 Database</value>
</data>
@ -3151,6 +3178,9 @@
<data name="Quota.MsSQL2008.MaxLogSize" xml:space="preserve">
<value>Max Log Size, MB</value>
</data>
<data name="Quota.MsSQL2012.MaxLogSize" xml:space="preserve">
<value>Max Log Size, MB</value>
</data>
<data name="Error.EXCHANGE_UPDATE_MAILBOX_PERMISSIONS" xml:space="preserve">
<value>Error updating mailbox permissions. See audit log for more details.</value>
</data>
@ -4693,6 +4723,9 @@
<data name="ReportResourceGroup.MsSQL2008" xml:space="preserve">
<value>SQL Server 2008</value>
</data>
<data name="ReportResourceGroup.MsSQL2012" xml:space="preserve">
<value>SQL Server 2012</value>
</data>
<data name="WebAppGallery.ApplicationInstallationError" xml:space="preserve">
<value>Error while install application pack</value>
</data>

View file

@ -165,4 +165,7 @@
<data name="lclMSSQL2008Resources.Text" xml:space="preserve">
<value>Microsoft SQL 2008 Quotas</value>
</data>
<data name="lclMSSQL2012Resources.Text" xml:space="preserve">
<value>Microsoft SQL 2012 Quotas</value>
</data>
</root>

View file

@ -160,6 +160,24 @@
</asp:Repeater>
</asp:PlaceHolder>
<asp:PlaceHolder runat="server" ID="MsSQL2012" Visible="false">
<tr>
<th colspan="2">
<br />
<div class="FormButtonsBar">
<div class="FormSectionHeader"><asp:Localize ID="Localize3" runat="server" meta:resourcekey="lclMSSQL2012Resources" /></div>
</div>
</th>
</tr>
<asp:Repeater runat="server" ID="MsSQL2012_Quotas">
<ItemTemplate>
<tr>
<td class="Width20Pcs" style="white-space: nowrap;"><strong><%# GetSharedLocalizedString("Quota." + GetQuotaItemName((string)Container.DataItem)) %>:</strong></td>
<td><%# GetQuotaItemAllocatedValue((string)Container.DataItem) %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</asp:PlaceHolder>
<asp:PlaceHolder runat="server" ID="MySQL4" Visible="false">
<tr>

View file

@ -157,6 +157,15 @@ namespace WebsitePanel.Ecommerce.Portal.UserControls {
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder MsSQL2008;
/// <summary>
/// MsSQL2012 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.PlaceHolder MsSQL2012;
/// <summary>
/// Localize3 control.
/// </summary>
@ -175,6 +184,15 @@ namespace WebsitePanel.Ecommerce.Portal.UserControls {
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater MsSQL2008_Quotas;
/// <summary>
/// MsSQL2012_Quotas control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Repeater MsSQL2012_Quotas;
/// <summary>
/// MySQL4 control.
/// </summary>

View file

@ -302,6 +302,7 @@ namespace WebsitePanel.Portal
AddDatabaseVersion(cntx, ResourceGroups.MsSql2000, items, versions);
AddDatabaseVersion(cntx, ResourceGroups.MsSql2005, items, versions);
AddDatabaseVersion(cntx, ResourceGroups.MsSql2008, items, versions);
AddDatabaseVersion(cntx, ResourceGroups.MsSql2012, items, versions);
AddDatabaseVersion(cntx, ResourceGroups.MySql4, items, versions);
AddDatabaseVersion(cntx, ResourceGroups.MySql5, items, versions);
}

View file

@ -206,9 +206,11 @@ namespace WebsitePanel.Portal
sqlDatabases.AddRange(ES.Services.DatabaseServers.GetSqlDatabases(packageId, ResourceGroups.MsSql2000, false));
sqlDatabases.AddRange(ES.Services.DatabaseServers.GetSqlDatabases(packageId, ResourceGroups.MsSql2005, false));
sqlDatabases.AddRange(ES.Services.DatabaseServers.GetSqlDatabases(packageId, ResourceGroups.MsSql2008, false));
sqlDatabases.AddRange(ES.Services.DatabaseServers.GetSqlDatabases(packageId, ResourceGroups.MsSql2012, false));
sqlUsers.AddRange(ES.Services.DatabaseServers.GetSqlUsers(packageId, ResourceGroups.MsSql2000, false));
sqlUsers.AddRange(ES.Services.DatabaseServers.GetSqlUsers(packageId, ResourceGroups.MsSql2005, false));
sqlUsers.AddRange(ES.Services.DatabaseServers.GetSqlUsers(packageId, ResourceGroups.MsSql2008, false));
sqlUsers.AddRange(ES.Services.DatabaseServers.GetSqlUsers(packageId, ResourceGroups.MsSql2012, false));
}
else if (driverName == "MySql")
{

View file

@ -69,6 +69,7 @@ namespace WebsitePanel.Portal
versions.Add(ResourceGroups.MsSql2000);
versions.Add(ResourceGroups.MsSql2005);
versions.Add(ResourceGroups.MsSql2008);
versions.Add(ResourceGroups.MsSql2012);
FillDatabaseVersions(PanelSecurity.PackageId, ddlDatabaseVersion.Items, versions);
}

View file

@ -140,6 +140,8 @@ namespace WebsitePanel.Portal
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
// add SQL Server engines
if (cntx.Groups.ContainsKey(ResourceGroups.MsSql2012))
AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2012, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2012));
if (cntx.Groups.ContainsKey(ResourceGroups.MsSql2008))
AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2008, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2008));
if (cntx.Groups.ContainsKey(ResourceGroups.MsSql2005))