15 Mar 2016
Many customers asked me questions on Azure Machine Learning (Microsoft’s fully managed machine learning and data mining solution) and more specifically on it’s pricing. In this post I will try to explain how the pricing works and what components you need to be aware of.
Azure Machine Learning is offered in two tiers: Free and Standard. The Free tier is obviously, well, free. It is however as you could expect limited compared to Standard. Differences are mostly in performance (multiple nodes for execution in standard vs. just one node in free) or storage (10 gb in free, unlimited in standard). There is no SLA for the free version, you cannot set up a production Web API to automate experiments in free and the staging web API is throttled.
For the standard tier, the following items need to be taken into consideration:
- Seat; Azure ML has a monthly fee per seat, which translates to a user (mostly your data scientist) using the Azure ML web interface to develop and tune experiments. This price is per month per subscription/seat.
- Studio usage; This is an hourly price for running experiments. You will pay this according to the number of hours your experiments run and thus claim computing resources.
- API Usage; Azure ML allows you to bring an experiment online through the use of RESTful web services. This means you can automate score and training and have applications, websites, etc. use the experiment without human interference. With this you could do an automated credit scoring, recommendation or churn prediction directly from your app or website. In order to make this work you will need to create a web service in Azure ML (also called API). Azure ML charges per hour for compute used in an API that is production, so that is the fee you will need to pay per hour the web service / API is 'online' and usable. Also, you will need to pay per 1000 transactions. Transactions in this case are interactions with the API, such as one recommendation, one churn or one credit score.
Hope this clarifies a bit. Please refer to the official page linked above for more details and for the pricing details.
09 Mar 2016
Als iemand een paar jaar terug tegen mij had gezegd dat Microsoft Multi platform zou gaan en dat ook SQL Server op Linux zou uitkomen, dan had ik hem voor gek verklaard. Echter sinds de komst van Satya Nadella als CEO en mensen als Scott Guthrie (CVP voor Cloud & Enterprise) waait er een frisse wind door Microsoft!
En als Microsoft employee voelde ik natuurlijk al wat aankomen, maar het is toch altijd weer top om het nieuws dan nu in de buitenwereld te zien landen: Gister heeft Microsoft de Linux versie van SQL Server geannonceerd in preview. Dit betreft voorlopig alleen het RDBMS en niet de overige SQL tools als SSRS en SSAS, maar een mooie start om nu ook op Linux de (volgens Gartner) de leading database te kunnen runnen!
Ik zou het leuk vinden als jullie na het testen van deze versie op het blog zouden willen reageren met de eerste indruk van de performance van deze preview versie.
De blogpost van Scott over de annoncering: http://blogs.microsoft.com/blog/2016/03/07/announcing-sql-server-on-linux/
SQL groeten,
Harry
19 Jan 2016
This post is #14 in the series to automatically build a Microsoft BI machine using PowerShell – see the start of series.
In this series:
Start of series – introduction and layout of subjects
Post #2 – Preparation: install files using Azure disk
Post #3 – Preparation: install files using Azure File Service
Post #4 –Preparation: logging infrastructure
Post #5 – Master script
Post #6 – Disabling Internet Explorer Enhanced Security Configuration
Post #7 – Active Directory setup
Post #8 – Configuring Password policy
Post #9 – Installing System Center Endpoint Protection
Post #10 – Installing SQL Server
Post #11 – Installing SharePoint Server
Post #12 – Installing PowerPivot for SharePoint
Post #13 – Configuring PowerPivot for SharePoint
Wow. This has been a long and wild ride. But you and I made it together. We now have the full recipe to automatically configure a Microsoft BI demo machine with PowerShell. Of course there is more to be done, such as configuring other Service Accounts and deploying demo content; this script however saves me a lot of time every time I need to stand up a new demo machine.
You can download the script on Github. Please note (again) that the code is provided as-is and you should use it at your own risk. It is probably still buggy but should give you a good starting point to adapt it to your needs.
I enjoyed the ride with you; hope I made your life a bit easier of the course of this series. Enjoy!
12 Jan 2016
This post is #13 in the series to automatically build a Microsoft BI machine using PowerShell – see the start of series.
In this series so far:
Start of series – introduction and layout of subjects
Post #2 – Preparation: install files using Azure disk
Post #3 – Preparation: install files using Azure File Service
Post #4 –Preparation: logging infrastructure
Post #5 – Master script
Post #6 – Disabling Internet Explorer Enhanced Security Configuration
Post #7 – Active Directory setup
Post #8 – Configuring Password policy
Post #9 – Installing System Center Endpoint Protection
Post #10 – Installing SQL Server
Post #11 – Installing SharePoint Server
Post #12 – Installing PowerPivot for SharePoint
Now that PowerPivot for SharePoint has been installed, we need to configure it. I split the configuration into two parts since we need a reboot in between and used MSDN for reference: http://msdn.microsoft.com/en-us/library/hh230903.aspx.
Step A: configuring SharePoint and deploying PowerPivot features
In Post #11 we talked about installing SharePoint, but the actual SharePoint provisioning was not done then. We will do it here in one go with installing PowerPivot features.
Function ConfigurePowerPivot
{
Param(
[Parameter(Mandatory=$true,HelpMessage="Passphrase required")]
[ValidateNotNullOrEmpty()]
$passphrase,
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
$Password
)
Write-Host "Step 8: Configure PowerPivot"
try {
#Load Configure PowerPivot ps1
$scriptPath = Split-Path -parent $global:script
. ('C:\Program Files\Microsoft SQL Server\120\Tools\PowerPivotTools\SPAddinConfiguration\Resources\ConfigurePowerPivot.ps1')
#Create a user for SharePoint DB connection
#if required, remove the ad user
Get-ADUser -Filter {Identity -eq '$global:spAccount'} | Remove-ADUser
CreateServiceAccount -AccountName $global:spAccount -DisplayName "SharePoint Farm account" -Description "Account for SharePoint Farm" -Path $global:path -Password $Password
$spAccountFQ = $global:domainpart+"\"+$global:spAccount
$pwd = convertto-securestring $Password -asplaintext -force
& "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\BIN\psconfig.exe" -cmd configdb -create -server $global:HostName -database 'SharePoint_Config' -user $spAccountFQ -password $Password -passphrase $passphrase -admincontentdatabase 'SharePoint_Admin' -cmd helpcollections -installall -cmd secureresources -cmd services -install -cmd installfeatures -cmd adminvs -provision -port 2000 -windowsauthprovider onlyusentlm -cmd applicationcontent -install -cmd quiet
Add-PSSnapin Microsoft.SharePoint.PowerShell
Add-SPSolution -LiteralPath 'C:\Program Files\Microsoft SQL Server\120\Tools\PowerPivotTools\SPAddinConfiguration\Resources\powerpivotfarmsolution.wsp'
Add-SPSolution -LiteralPath 'C:\Program Files\Microsoft SQL Server\120\Tools\PowerPivotTools\SPAddinConfiguration\Resources\PowerPivotFarm14Solution.wsp'
Add-SPSolution -LiteralPath 'C:\Program Files\Microsoft SQL Server\120\Tools\PowerPivotTools\SPAddinConfiguration\Resources\powerpivotwebapplicationsolution.wsp'
DeployFarmSolution $false
DeployWebAppSolutionToCentralAdmin $false
Install-SPFeature -path PowerPivotFarm -Force
Install-SPFeature -path PowerPivotFarm -Force -CompatibilityLevel 14
Install-SPFeature -path PowerPivotCA -Force
InstallSiteCollectionFeatures
Write-Host "PowerPivot Part 1 Configured. Computer needs to be restarted before PowerPivot configuration can continue." -ForegroundColor Green
if ($global:DoAllTasks) {
Set-Restart-AndResume $global:script "9"
}
}
catch {
Write-Host "Failed to configure PowerPivot. Error: $_.Exception.Message" -ForegroundColor Red
}
}
Step B: updating farm credentials and starting service applications
After the PowerPivot features have been deployed we need to configure Service Applications to get PowerPivot to work.
Function ConfigurePowerPivotPart2 {
Param(
[Parameter(Mandatory=$true,HelpMessage="Passphrase required")]
[ValidateNotNullOrEmpty()]
$passphrase,
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
$Password
)
try {
#Load Configure PowerPivot ps1
$scriptPath = Split-Path -parent $global:script
. ('C:\Program Files\Microsoft SQL Server\120\Tools\PowerPivotTools\SPAddinConfiguration\Resources\ConfigurePowerPivot.ps1')
Add-PSSnapin Microsoft.SharePoint.PowerShell
Write-Host "DEBUG: updating Farm Credentials"
$spAccountFQ = $global:domainpart+"\"+$global:spAccount
stsadm.exe -o updatefarmcredentials -userlogin $spAccountFQ -password $Password
Write-Host "DEBUG: New-PowerpivotSystemServiceInstance"
New-PowerPivotSystemServiceInstance -Provision:$true
Write-Host "DEBUG: New-PowerPivotServiceApplication"
New-PowerPivotServiceApplication -ServiceApplicationName 'PowerPivot Service Application' -DatabaseServerName $global:HostName -DatabaseName 'PowerPivotServiceApplication' -AddToDefaultProxyGroup:$true
Write-Host "DEBUG: Set-PowerPivotSystemService"
Set-PowerPivotSystemService -Confirm:$false
Write-Host "DEBUG: Creating user DefAppPool"
$appAccountName = "DefAppPool"
$appAccountNameFQ = $global:domainpart+"\"+$appAccountName
CreateServiceAccount -AccountName $appAccountName -DisplayName "Default Application Pool" -Description "Service Account for Default Application Pool" -Path $global:path -Password $Password
Write-Host "DEBUG: CreateWebApplication"
CreateWebApplication 'SharePoint - 80' $global:HostName 'Default Application Pool' $appAccountNameFQ $pwd $global:HostName 'DefaultWebApplication'
Write-Host "DEBUG: DeployWebAppSolution"
DeployWebAppSolution $global:httpHostName 2047 $false
Write-Host "DEBUG: New-SPSite"
New-SPSite -Url $global:httpHostName -OwnerEmail 'me@example.com' -OwnerAlias $global:currentUserName -Template 'PowerPivot#0' -Name 'PowerPivot Site'
Write-Host "DEBUG: EnableSiteFeatures"
EnableSiteFeatures $global:httpHostName $true
Write-Host "DEBUG: StartService SPWindowsTokenServiceInstance"
StartService "Microsoft.SharePoint.Administration.Claims.SPWindowsTokenServiceInstance"
Write-Host "DEBUG: StartSecureStoreService"
StartSecureStoreService
Write-Host "DEBUG: CreateSecureStoreApplicationService"
CreateSecureStoreApplicationService $global:HostName 'Secure Store Service'
Write-Host "DEBUG: CreateSecureStoreApplicationServiceProxy"
CreateSecureStoreApplicationServiceProxy 'Secure Store Service' 'Secure Store Proxy'
Write-Host "DEBUG: UpdateSecureStoreMasterKey"
UpdateSecureStoreMasterKey 'Secure Store Proxy' $passphrase
Write-Host "DEBUG: CreateUnattendedAccountForDataRefresh"
CreateUnattendedAccountForDataRefresh $global:httpHostName 'PowerPivotUnattendedAccount' 'PowerPivot Unattended Account for Data Refresh' $spAccountFQ $pwd
Write-Host "DEBUG: StartService ExcelServerWebServiceInstance"
StartService "Microsoft.Office.Excel.Server.MossHost.ExcelServerWebServiceInstance"
Write-Host "DEBUG: New-SPExcelServiceApplication"
New-SPExcelServiceApplication -name 'ExcelServiceApp1' -Default -ApplicationPool 'SharePoint Web Services System' | Get-SPExcelServiceApplication | Set-SPExcelServiceApplication | iisreset Set-SPExcelFileLocation -ExternalDataAllowed 2 -WorkbookSizeMax 200 -WarnOnDataRefresh:$false -ExcelServiceApplication 'ExcelServiceApp1' -identity 'http://'
Write-Host "DEBUG: AddExcelBIServer"
AddExcelBIServer
Write-Host "DEBUG: SetECSUsageTracker"
SetECSUsageTracker 'ExcelServiceApp1'
Write-Host "PowerPivot Configured" -ForegroundColor Green
if ($global:DoAllTasks) {
Set-Restart-AndResume $global:script "10"
}
}
catch {
Write-Host "Failed to configure PowerPivot. Error: $_.Exception.Message" -ForegroundColor Red
}
}
Now we have seen all the steps required to build a Microsoft BI demo machine! The next post will serve as a wrap up and present a download for the full script.
05 Jan 2016
This post is #12 in the series to automatically build a Microsoft BI machine using PowerShell – see the start of series.
In this series so far:
Start of series – introduction and layout of subjects
Post #2 – Preparation: install files using Azure disk
Post #3 – Preparation: install files using Azure File Service
Post #4 –Preparation: logging infrastructure
Post #5 – Master script
Post #6 – Disabling Internet Explorer Enhanced Security Configuration
Post #7 – Active Directory setup
Post #8 – Configuring Password policy
Post #9 – Installing System Center Endpoint Protection
Post #10 – Installing SQL Server
Post #11 – Installing SharePoint Server
Ok, now that both SQL Server and SharePoint Server are installed, we just need to set up PowerPivot for SharePoint and configure it. Easy huh? Well, it turns out it is pretty difficult to get it right. Installation is not difficult (this post) but the configuration is harder (the next post). Here is how to install PowerPivot. I used MSDN for the info: http://msdn.microsoft.com/en-us/library/ee210645.aspx.
Installing PowerPivot involves mounting the SQL Server Installation Media and calling the setup with the right parameters.
Function InstallPowerPivot
{
Param(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
$Password
)
Write-Log -Verbose "Step 7: Install PowerPivot"
#MOUNT SQL ISO
$mountresult = Mount-DiskImage -ImagePath $global:pathToSQLISO -PassThru
$driveLetter = ($mountresult | Get-Volume).DriveLetter
$setupFile = $driveLetter+":\setup.exe"
#Remove Service Account if it already existed
Get-ADServiceAccount -Filter {Name -eq 'PP'} | Remove-ADServiceAccount
$ppAccountName = "PP"
$ppAccountNameFQ = $global:domainpart+"\"+$ppAccountName
CreateServiceAccount -AccountName $ppAccountName -DisplayName "PowerPivot" -Description "Service Account for PowerPivot for SharePoint" -Path $global:path -Password $Password
#do PP installation
#trying with plain text pwd in call
$process = Start-Process -NoNewWindow -Wait $setupFile -ArgumentList "/ACTION=INSTALL /IACCEPTSQLSERVERLICENSETERMS /Q /INSTANCENAME=POWERPIVOT /ERRORREPORTING=1 /SQMREPORTING=1 /ASSVCACCOUNT=$ppAccountNameFQ /ASSVCPASSWORD=$Password /ASSYSADMINACCOUNTS=$global:currentUserName /ROLE=SPI_AS_ExistingFarm"
#SPI_AS_ExistingFarm
#dismount
Dismount-DiskImage -ImagePath $global:pathToSQLISO
Write-Log -Verbose "If above an error is shown please check out C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Log\Summary.txt"
Write-Log -Verbose "PowerPivot Installed"
if ($global:DoAllTasks) {
Set-Restart-AndResume $global:script "9"
}
}
Next time: configuring PowerPivot.