What SQL Server is my SharePoint machine pointed to?

I recently powered on a SharePoint 2016 box that I haven't used in a while, when I powered it on and tried to browse to the default SharePoint site at http://machinename I received the classic .net error:

Server Error in '/' Application.

Runtime Error

I also attempted to open the SharePoint Central Administration page and received the same error.

I opened the web.config for the default SharePoint site at  c:\inetpub\wwwroot\wss\VirtualDirectories\80 and searched for the word 'error' located the xml node...

<customErrors mode="On" /> and changed this setting to 'Off'

Refreshing the http://machinename page now displays the hidden error message...

'This operation can be performed only on a computer that is joined to a server farm by users who have permissions in SQL Server to read from the configuration database. To connect this server to a server farm, use the SharePoint Products Configuration Wizard, located on the Start menu in Microsoft Sharepoint 2016 Products.

Unfortunately, if I attempt to run the SharePoint Products Configuration Wizard it also displays an error message 'Failed to detect if this server is joined to a server farm,,,'

Turns out the SQL server was just turned off but in my environment I have many SharePoint Servers, SQL Servers, Web Servers, etc. I wasn't sure which SQL server this SharePoint machine was pointed to and I only wanted to power on this one SQL Server.

There are probably multiple ways to determine which SQL Server the SharePoint box is pointed to but the way I chose to find out was to just reference a registry key that defined the connection string to the configuration database. The key name is dsn and the Data value is populated with the connection string.

My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\16.O\Secure\ConfigDb


Connect SQL Server 2014 Management Studio to Azure SQL Database

To connect SQL Server Management Studio (SSMS) to an Azure SQL database log in to the Azure Management Portal

Create a new database or connect to an existing database

For this example I'll create a new SQL database, from Azure home page select SQL Databases and select  +Add

Select the database

After the database has been created (may take a few minutes and a refresh to appear), from the SQL databases menu select the database that was just created (MyDb).

Add a firewall rule

In order to connect to the Azure SQL database a firewall rule must be created with the IP address or range of IP addresses that will be allowed to access the database.

After the firewall rule has been created the database can now be connected to using SSMS.

Copy the server name

From the Azure Management Portal Select SQL Databases and select the MyDb database

Copy the server name listed below Essentials for your database

Determine Server Admin username for the Azure SQL Server

From the SQL Databases menu select the database (MyDb)

Select the server name link below Essentials - Note: you must have a username and password that has access to the database to connect using SSMS.

Launch the SSMS Application

Paste the server name that was copied above and enter the username and password


OneDrive for Business

What is OneDrive for Business?

Let’s start with what OneDrive for Business (ODFB) is not, ODFB is not Microsoft’s service for hosting files in the cloud (OneDrive – previously SkyDrive which is intended for personal storage) that allows users to sync files and later access them from a web browser or mobile device. OneDrive is a completely separate product and has nothing to do with ODFB.

Microsoft OneDrive for Business variations

On Premises SharePoint – OneDrive for Business on premises

  • OneDrive for Business is a brand, not a product and it consists of three specific things
  1. SharePoint My Site – a site collection that is created by default for every user
  2. My Documents Library in SharePoint My Site - A document library that every user has and OWNS (key point), in addition it allows users to sync any other document library the user has access to
  3. Synchronization Tool for synchronizing between desktop and Document Library. The OneDrive for Business Windows Sync client installs either with Office 2013 Standard or with Office 2013 Professional Plus. Or you can download the stand-alone OneDrive for Business Windows Sync client
  • ODFB replaces previous Microsoft products Groove (SharePoint 2007) and SharePoint Workspace (Sharepoint 2010)

Prerequisites - To support OneDrive for Business document libraries in SharePoint Server 2013, you must have:

  • Configured the User Profile Service application
  • Configured My Sites
  • For Office 2013 to display the user's My Site as a default save or open location, you must configure SharePoint Server 2013 to use Exchange Autodiscover
  • To support system generated email notifications from SharePoint Server 2013 when a user shares a document with another user, make sure outgoing email is configured for your SharePoint Server 2013 farm

Library quotas

By default, the quota for each user's My Site in SharePoint Server 2013 is 100 MB. If you plan to use the OneDrive for Business document library for users to store their files, you should increase this default quota limit. If your organization uses SharePoint Online, a user's My Site quota is set to 25 GB and is configurable to 50 GB or 100 GB per user.

Library customization

Although the OneDrive for Business document library supports many of the features of a standard document library, a user shouldn't customize the OneDrive for Business document library because it might affect synchronization.
For example, if a user modifies the document library to require that metadata be filled in, the files are synchronized with SharePoint Server 2013, however, the document remains checked out. To check-in the document, the user has to fill in the required metadata either through SharePoint Server 2013 using the browser, or by opening the file with the Office 2013 client.
In addition, keep permission levels at the default settings of Can edit and Can view.

Office 365 – SharePoint and OneDrive for Business in the Cloud

  • ODFB provides 1 Terabyte of storage for every user
  • External sharing works out of the box – share with users outside of the SharePoint environment, they’ll get an email and get access to that single document
  • Advantage – users can edit Microsoft Office documents directly from the browser without having Microsoft Office installed on the client
  • Multiple plans available with different storage, encryption and data loss features

Stand alone OneDrive – give users the My Site, the My Site My Documents and the ability to sync

  • Multiple plans available with different storage, encryption and data loss features


  • ODFB My Documents library in users My Site has an item limit of 20,000 items that can be synced and downloaded locally for offline usage
  • Additional document libraries within SharePoint can be synced as well but have a limitation of 5,000 items
  • Sync is by document library and not by files or folders
  • 2GB file size limit
  • Character limitations in files and folder names
  • Not available on a Mac – this may have changed
  • Files don’t have a URL directly to them
  • Number of items that can be sync’d


  • The old concept of My Site in SharePoint is going away and being replaced with OneDrive for Business
  • When a user clicks the OneDrive link in the SharePoint 2013 navigation, the user is redirected to what used to be called My Site, now ODFB
  • When a user installs Microsoft Office 2013 it installs a client tool called OneDrive for Business which handles the synchronizations of files between SharePoint and the client desktop
  • There is a Powershell script available to create the ODFB sites for all users programmatically because they are not created by default. By default, when a user first logs in to SharePoint the My Site is created
  • Mapping a drive to OneDrive for Business from the client, make sure the desktop experience feature is installed on the SharePoint server to allow this

Hybrid OneDrive for Business - Starting with SharePoint 2013 SP1 you can connect on-premises SharePoint 2013 servers to the cloud and turn on OneDrive for Business

Figure 1

  • In SharePoint Server, you can redirect users to OneDrive for Business stand alone or Office 365 (see figure 2) when they choose OneDrive in the navigation bar (SharePoint Server 2010 and SharePoint Server 2013) or in the app launcher (SharePoint Server 2016). This is known as hybrid OneDrive for Business.
  • If you want to redirect your users to OneDrive for Business in Office 365, you need an Office 365 tenant where your users are licensed and at least Service Pack 1 installed on your farm.
  • To avoid user confusion, keep the following in mind when you turn on hybrid OneDrive for Business:
  1. When you turn on this feature, your users will be directed to OneDrive for Business in Office 365 when they click OneDrive in SharePoint Server. Be sure to plan to migrate your users' content from their old SharePoint Server OneDrive for Business to the new one in Office 365.
  2. Because there's no direct link between OneDrive for Business in SharePoint Server and OneDrive for Business in Office 365, users' Shared with me lists in Office 365 won't display documents that have been shared with them from on-premises SharePoint Server.For example, if a user modifies the document library to require that metadata be filled in, the files are synchronized with SharePoint Server 2013, however, the document remains checked out. To check-in the document, the user has to fill in the required metadata either through SharePoint Server 2013 using the browser, or by opening the file with the Office 2013 client.
  3. Keep permission levels at the default settings of Can edit and Can view

Figure 2

Windows Explorer view on client desktop

Figure 3

Coming Soon

New sync capabilities include:

  • Ability to sync SharePoint Online document libraries and OneDrive folders shared with you (preview available today)
  • An “activity center” has been added to the OneDrive sync client to allow you to view synchronization and file activity at a glance (preview available today)

New browser capabilities include:

  • Rich thumbnails and previews for over 20 new file types (rolling out before the end of 2016)
  • Ability to access and edit all your files in OneDrive and SharePoint Online from the OneDrive browser client (rolling out before the end of 2016)
  • Capability to download multiple files as a .zip file (rolling out before the end of 2016)

New mobile capabilities include:

  • Notifications to your iOS or Android device when someone shares a OneDrive file with you (available today)
  • Access to SharePoint Online files in the OneDrive app on Android (available today)
  • Multi-page scan enhancements in the OneDrive app on Android (available today)
  • Ability to see over time how many people have discovered and viewed your files in OneDrive for iOS (available today)

New IT capabilities include:

  • Enhancements to integration with Office 2016 (available in First Release)
  • Simple, flexible OneDrive user management in Office 365 (available in First Release)
  • Dedicated OneDrive administration console in Office 365 (rolling out before the end of 2016)


Entity Framework - Introduction (Part 2 of 3)

Entity Framework - Introduction (Part 2 of 3)

(Part 1)(Part 3)

Part 2 Model First

In part one we looked at creating a database fist project and generated a model from our pre-existing database, in part 2 we are going to build a model first and then create the database from the model. To begin this part of the tutorial we'll create a new class library project.

Create a new Visual Studio Class Library Project

Once the new project has been created, right click on the project name and select Add | New Item

Under C# Select Data | ADO.NET Entity Data Model

Select Empty Model and Finish

Building the Model

Next we'll add some entity objects on the design surface and start building our model. Entity objects can be created either by dragging and dropping items from the toolbox to the design surface or right clicking on the design surface and selecting Add | New Item.

Add From Toolbox

Add from Designer Surface

First I'll add a new Entity and call it Movie, notice that by default a new ID property is created with an int32 type and set to an identity.

Next, I'll add two more scalar properties to the Movie entity, title and date. 
Note: The default for a new scalar property is string and non-nullable. Note: the max length attribute of our scalar property will be used when the database is created for the max length of the column.

Change the type of the date property to DateTime

The next Entity will be called Genre, create one scalar property in the Genre called Category with a default type of string. The last Entity I'll create will be called Actor, I'll create one new scalar property called Name with a default type of string.

The Entity diagram should now look something like this

Create the Entity Relationships (Associations)

Right click on Movie and Select Add | Association

Ensure that Movie and Actor are selected in the dropdown boxes, Change the Multiplicity to Many to Many, this is because there can be many actors in a movie and actors can be in many movies. The new association will create 2 new navigation properties, Actors and Movies.

The Design Diagram has been updated showing the new association, many movies to many actors

Next create another association for Movie to Genre, this association will be many to one because movie can only have 1 genre but genre can be associated with many movies.

Generate the Database from the Model

Next we're going to create our SQL database from our model design. 
Note: The database that we are going to create needs to already exist on the SQL Server, just a shell of a database that we can point to. The command to Generate the database from the model actually just generates the schema in the existing database.

Create a new database on the SQL server called MovieLibrary

Before we generate the database from the model, let's take a look at the metadata that describes the database and metadata that describes the mapping between the model and the database.

To view the metadata, right click on the ModelFirst.edmx file in the Visual Studio Solution Explorer and select Open With | XML

There are two highlighted sections in the XML file, the first is the storage schema that describes the database and the second is the mapping layer, these sections are currently empty because we have not generated the database from the model yet.

Next go back to the Designer view of the model and right click on the design surface and select Generate Database From Model.

Create a new connection to the SQL server, select the new MovieLibrary database.

Select Next


Select Finish and the SQL file will be created that can be run against the SQL Server.

Right click anywhere in the file and select Execute. You'll be prompted from the SQL Server to enter credentials. After credentials have been entered you should get a message in the T-SQL window saying the Command Completed Successfully.

Take a look inside the database and see if the tables created in the model are now in the database.

This completes part 2 of the Entity Framework introduction, in part 3 I will discuss using the newly created models to leverage the Entity Framework.

(Part 1)(Part 3)


Microsoft Entity Framework Intro (Part 1 of 3)

Entity Framework - Introduction (Part 1 of 3)

(Part 2, Part 3)

The following tutorial will explain some basic concepts using the Microsoft Entity Framework, I'll attempt to explain this with a few examples to help demonstrate some of the capabilities.

Recomendations for this tutorial, other versions of these products may work however these are the versions used in this tutorial.

1. Microsoft Visual Studio 2012
2. SQL Server 2008R2
3. AdventureWorks database (2008R2 version) downloaded and installed from http://msftdbprodsamples.codeplex.com/downloads/get/478216


The Microsoft Entity Framework (EF) is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the data-access code that developers usually need to write. This creates, in effect, a "virtual object database" that can be used from within a project to access database objects using C# code instead of having to write a whole lot of SQL queries. In this post we'll add a sample database to our SQL server, create a new Entity Framework model from our existing sample database and try and get an understanding of the model.

Part 1 - Database First

Adding the AdventureWorks Database - If you do not have the demo database attached to your SQL Server you can download the database from the link above. Once downloaded attach the database to SQL Server.

Step 1 - Copy the database files into the correct file locations for your SQL Server. The .mdf file should be copied into the data folder where all the other SQL Databases exist and the .ldf file should be copied into the the Log folder where all the other Log files exist.

Step 2 -From the SQL Server Management Console right click on databases and select Attach.

Step 3 - Select Add and browse to the correct .mdf file located where you copied it on the SQL Server

Step 4 - Select the ellipsis next to the log file and ensure the log file path is correct

Step 5 - Ensure the AdventureWorks database is correctly attached to your SQL Server

Creating the Visual Studio Project - Next we'll create a Visual Studio Project to demonstrate some of the Entity Framework capabilities.

Note: If you are using a version of Visual Studio other than 2012, you may not have the Entit

In this example I'll create a new class library project, I'll be able to add or reference this project in any new solution that I create in order to leverage the Entity Framework.

Create a new class library and name it EFModel

Right click on the project name and select add, add a new ADO.NET Entity Data Model

Create an Entity Data Model From a database

Create a new connection to your database

rename the connection settings AWEntities

Select Tables and Views to be populated from the database into our new Entity Model and select Finish

We can now see a new Entity Framework model has been created called EFModel, this will be instantiated in our project when we want to leverage the Entity Framework.

The designer view of the Entity Model will be displayed, we can view all of the relationships or associations in the designer. Notice the relationship between Customer and SalesOrderHeader is a one to many relationship (depicted by the 1 on customer and the asterisks on SalesOrderHeader)

In our project an App.Config file has been created, within this file an Entity connection string can be found.

If we right click on the white space in the designer view of our Entity Model and select Mapping Details, then select one of the entities in the diagram, the database column to class property mapping can be viewed or modified.

The mapping details shows the relationships between the database columns and the model properties, these are also customize-able.


This wraps up part one of the introduction to the Entity Framework, we covered getting a sample database installed on our SQL Server 2008R2 Database Server, Creating a new Class Library project, adding an Entity Framework model created from our existing AdventureWorks database and briefly looking at our completed Model. In part two we'll cover creating a SQL database from an existing model.

(Part 2, Part 3)



Microsoft MSDN .img file

Microsoft seems to have switched file formats from .iso to .img for some of the software available on MSDN.

What is an .img file? At first I thought I had to use Nero to burn the image to a disk and then install, but I noticed that in Windows 8 you can natively mount .iso and .img formats.

Since I don't plan on installing these .img files on Windows 8 or Server 2012 yet, you can simply rename the file from .img to .iso and then use the file as you would normally use an .iso