Month: September 2013

SQL Server 2012 Unattended Installation

In order to have uniformity across multiple environments/installation, I would prefer to have an scripted installation of applications as much as possible. SharePoint 2007/2010/2013 are some of the examples of automated installation. Thanks to AutoSPInstaller.

Today, you will see how to do a unattended installation of SQL Server 2012.

You can create a configuration file and use it as shown to install SQL Server.

Setup.exe /ConfigurationFile="ConfigurationFile.ini"

That being said, the main task here is to create the configuration file. There are couple of ways to do it:

1) Take a look at this documentation and create a new configuration file.

2) Modify the following sample configuration file as you need.

Here I like to set QUIETSIMPLE=”True”, just my preference. You will see the installation window but don’t need your interaction.

[OPTIONS]
; Acknowledge acceptance of the license terms.
IACCEPTSQLSERVERLICENSETERMS="True"
; Specifies a Setup work flow, like INSTALL, UNINSTALL, or UPGRADE. REQUIRED
ACTION="Install"
; Use this parameter to install the English version of SQL Server on a localized operating system when the installation media includes language packs for both English and the language corresponding to the operating system.
ENU="True"
; Parameter that controls the user interface behavior. Valid values are Normal for the full UI,AutoAdvance for a simplied UI, and EnableUIOnServerCore for bypassing Server Core setup GUI block.
;UIMODE="Normal"
; Setup will not display any user interface.
QUIET="False"
; Setup will display progress only, without any user interaction.
QUIETSIMPLE="True"
; Specify whether SQL Server Setup should discover and include product updates. The valid values are True and False or 1 and 0. By default SQL Server Setup will include updates that are found.
UPDATEENABLED="True"
; Specifies features to install, uninstall, or upgrade. The list of top-level features include SQL, AS, RS, IS, MDS, and Tools. The SQL feature will install the Database Engine, Replication, Full-Text, and Data Quality Services (DQS) server. The Tools feature will install Management Tools, Books online components, SQL Server Data Tools, and other shared components.
FEATURES=SQLENGINE,SSMS,ADV_SSMS
; Specify the location where SQL Server Setup will obtain product updates. The valid values are "MU" to search Microsoft Update, a valid folder path, a relative path such as .\MyUpdates or a UNC share. By default SQL Server Setup will search Microsoft Update or a Windows Update service through the Window Server Update Services.
UPDATESOURCE="MU"
; Displays the command line parameters usage
HELP="False"
; Specifies that the detailed Setup log should be piped to the console.
INDICATEPROGRESS="False"
; Specifies that Setup should install into WOW64. This command line argument is not supported on an IA64 or a 32-bit system.
X86="False"
; Specify the root installation directory for shared components.  This directory remains unchanged after shared components are already installed.
INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"
; Specify the root installation directory for the WOW64 shared components.  This directory remains unchanged after WOW64 shared components are already installed.
INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server"
; Specify a default or named instance. MSSQLSERVER is the default instance for non-Express editions and SQLExpress for Express editions. This parameter is required when installing the SQL Server Database Engine (SQL), Analysis Services (AS), or Reporting Services (RS).
INSTANCENAME="INSTANCE1"
; Specify the Instance ID for the SQL Server features you have specified. SQL Server directory structure, registry structure, and service names will incorporate the instance ID of the SQL Server instance.
INSTANCEID="INSTANCE1"
; Specify that SQL Server feature usage data can be collected and sent to Microsoft. Specify 1 or True to enable and 0 or False to disable this feature.
SQMREPORTING="False"
; Specify if errors can be reported to Microsoft to improve future SQL Server releases. Specify 1 or True to enable and 0 or False to disable this feature.
ERRORREPORTING="False"
; Specify the installation directory.
INSTANCEDIR="C:\Program Files\Microsoft SQL Server"
; Specifies the account for the SQL Server Agent service.
AGTSVCACCOUNT="Administrator"
AGTSVCPASSWORD="Pa$$w0rd"
; Auto-start service after installation.
AGTSVCSTARTUPTYPE="Automatic"
; CM brick TCP communication port
COMMFABRICPORT="0"
; How matrix will use private networks
COMMFABRICNETWORKLEVEL="0"
; How inter brick communication will be protected
COMMFABRICENCRYPTION="0"
; TCP port used by the CM brick
MATRIXCMBRICKCOMMPORT="0"
; Startup type for the SQL Server service.
SQLSVCSTARTUPTYPE="Automatic"
; Level to enable FILESTREAM feature at (0, 1, 2 or 3).
FILESTREAMLEVEL="0"
; Set to "1" to enable RANU for SQL Server Express.
ENABLERANU="False"
; Specifies a Windows collation or an SQL collation to use for the Database Engine.
SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS"
; Account for SQL Server service: Domain\User or system account.
SQLSVCACCOUNT="Administrator"
SQLSVCPASSWORD="Pa$$w0rd"
; Windows account(s) to provision as SQL Server system administrators.
SQLSYSADMINACCOUNTS="Administrator"
; Provision current user as a Database Engine system administrator for SQL Server 2012 Express.
ADDCURRENTUSERASSQLADMIN="False"
; Specify 0 to disable or 1 to enable the TCP/IP protocol.
TCPENABLED="1"
; Specify 0 to disable or 1 to enable the Named Pipes protocol.
NPENABLED="0"
; Startup type for Browser Service.
BROWSERSVCSTARTUPTYPE="Automatic"

3) Have SQL Server do it for you.

Run SQL Server 2012 Setup as you normally would and set all of the configuration settings you want, clicking through all of the pages of the setup wizard. (This is the last time you will be doing it so be patient and do it carefully).

When you are in the “Ready to Install” phase, you get a chance to review all of your configuration settings. You will see the path of the configuration file at the bottom of the screen. Grab the configuration file. and use it and re-use it with only minor modifications.

Error Uploading certain file types in Explorer View

Even when you unblock some file types from SharePoint Central Administration, you get the following error:
1

These file types need to be allowed in IIS level.
Solution:
Open IIS.
Select SharePoint site.
Under IIS section > Handler Mappings.
2

Edit Feature Permissions
3

Uncheck Execute
7

Under IIS Section > MIME Types
4

Add MIME Type > include the file types that you needed (if they are not included already)
5

Now, Go to IIS Configuration file.
%SystemRoot%system32/inetsrv/config/applicationHost.config6

Find section<requestFiltering>. Change the Allowed property to True.8

Recycle Application pool for the site.

Set the Master Page and Homepage to Default Using Powershell

Set the Master Page and Homepage to Default Using Powershell

There was problem in branding feature. Site went down when the feature didn’t activate successfully. So to set the master page and home page to default, I used PowerShell.
Setting v4.master as default master page

$web = Get-SPWeb http://url
$web.CustomMasterUrl = "/_catalogs/masterpage/v4.master"
$web.MasterUrl = "/_catalogs/masterpage/v4.master"
$web.Update() 

Setting Default.aspx as homepage

$web = Get-SPWeb http://url
$folder = $web.RootFolder
$folder.WelcomePage = "default.aspx"
$folder.update()

Create SharePoint Permission Levels and Groups using PowerShell

Create SharePoint Permission Levels and Groups using PowerShell

In this example, I am creating custom permission levels and SharePoint groups in a site collection using PowerShell. I will assign permission levels to the groups and add users to the SharePoint groups.
This will be really helpful to manage user permissions in your SharePoint environment.

//prompt to enter URL
$url=read-host "Portal URL"

//Specify name for Permission level and Group.
$siteVisitorPL= "Visitor Permission Level"
$siteVisitorGroup = "Visitors Group"

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$site=Get-SPSite $url
$web=$site.RootWeb;
write-host "$web"

# ADD PERMISSION LEVEL
write-host "Creating Permission Levels in $web"
# Adding $siteVisitorPL to the site
	if($web.RoleDefinitions[$siteVisitorPL] -eq $null)
	{
		$spRoleDefinition = New-Object Microsoft.SharePoint.SPRoleDefinition
		$spRoleDefinition.Name = $siteVisitorPL
		$spRoleDefinition.Description = "Permission Level for the Visitors SharePoint Group ($siteVisitorGroup)."
		//You can enumerate base permissions using following line and specify them as needed for your permission level.
		//[System.Enum]::GetNames("Microsoft.SharePoint.SPBasePermissions")
		$spRoleDefinition.BasePermissions = "ViewListItems, ViewVersions, CreateAlerts, ViewFormPages, ViewPages, UseRemoteAPIs, UseClientIntegration, Open"
		$web.RoleDefinitions.Add($spRoleDefinition)
		write-host "$siteVisitorPL is created."
	}
	else
	{
		write-host "$siteVisitorPL - Already exists!"
	}
	write-host "Permission Level is created in $web."

# CREATE GROUPS

# Site Visitors Group 
if($web.SiteGroups[$siteVisitorGroup] -eq $null)
{
$web.SiteGroups.Add($siteVisitorGroup, $web.Site.Owner, $web.Site.Owner, “Use this group to grant people Visitor permissions to the $web site”)
$siteVisitorGroup = $web.SiteGroups[$siteVisitorGroup]
$siteVisitorGroup.OnlyAllowMembersViewMembership = $false
$siteVisitorGroup.AllowMembersEditMembership = $false
$siteVisitorGroup.Update()
write-host "$siteVisitorGroup is created."
}
else
{
write-host "$siteVisitorGroup - Already exists!"
$siteVisitorGroup = $web.SiteGroups[$siteVisitorGroup]
}
write-host "Site Group are created in $web."

###### Create a new assignment (group and permission level pair) which will be added to the web object
$siteVisitorGroupAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($siteVisitorGroup)

###### Get the permission levels to apply to the new groups
$siteVisitorRoleDefinition = $web.Site.RootWeb.RoleDefinitions[$siteVisitorPL]

###### Assign the groups the appropriate permission level
$siteVisitorGroupAssignment.RoleDefinitionBindings.Add($siteVisitorRoleDefinition)

###### Add the groups with the permission level to the site
$web.RoleAssignments.Add($siteVisitorGroupAssignment)

##ADD USERS TO GROUPS to Portal
$group= $web.SiteGroups[$siteVisitorGroup]
$user = $web.Site.RootWeb.EnsureUser("DOMAIN\user1")
$group.AddUser($user)
$user = $web.Site.RootWeb.EnsureUser("DOMAIN\user2")
$group.AddUser($user)
write-host "Users are added to $group."

$web.Update()
write-host "Permission Levels are assigned to SharePoint group in $web"
$web.Dispose()
$site.Dispose()

Adding File Types for Indexing in Search Service Application using PowerShell

Adding File Types for Indexing in Search Service Application using PowerShell

#UPDATE Search Service Application Name
$sa=Get-SPEnterpriseSearchServiceApplication "Search_Application_Name_Here" 
$filesToAdd= ("asc", "ascx", "asp", "aspx", "stm")
foreach($file in $filesToAdd)
{
New-SPEnterpriseSearchCrawlExtension -SearchApplication $sa -Name $file -ErrorAction SilentlyContinue
}
write-host "File Types are added in the content index"