Reinstall OEM-installed Windows 8.1

One of the first steps of the re-installation process of Windows 8.1 is that it asks for a Windows key. There is a "bug" that prevents a valid Windows key from working when the general Windows 8 installation disk is used on a laptop with a pre-installed OEM version.

Fortunately, if there are no installation disks supplied, then Windows 8.1 can still be easily re-installed on such a laptop, for example on another partition or disk:

1. Get a copy of the Windows 8.1 ISO, e.g. "Windows_8.1_EN-US_x64.ISO" and extract the contents to a USB stick

2. Bypass the Windows key screen by creating an ei.cfg text file in the sources folder on the USB stick. It should contain the following (replace "Core" with "Professional", if you have a valid key for that edition):

[EditionID]
Core
[Channel]
Retail
[VL]
0

3. Restart the laptop with the USB stick in it. The initial Windows key screen is skipped. During the latter part of the installation another Windows key screen pops up. Here the genuine valid key can be entered

Notes
  • It has to be a USB stick, an external disk will not work: Win 8 can only be installed from an USB stick or a DVD
  • Unfortunately, I cannot supply a link to the above mentioned ISO file
  • Make sure the BIOS settings are such that the USB stick can be booted from and is the first in the sequence of bootable devices. Check how to enter the BIOS and set the bootable USB device on the site of the laptop manufacturer. Each manufacturer has a different method. For Lenovo IdeaPad: press and hold the small round button next to the power adapter entrance during a reboot

SQL Server contained database feature

SQL Server 2012 has a "contained database" feature.

In the normal case the logins of the (SQL Server) server are coupled to the users in each of its databases. The logins are stored in its MASTER database. If a database gets restored to another server, then the mapping is lost and you end up with "orphaned users". Those accounts can no longer access the database.

For a contained database on a SQL Server:
  • The server logins are not used/required. Users can be created and used without a matching login on the server. These users are called "portable users"
  • The database handles the autorization instead of the server. This is called "contained database authentication". Activate this delegation of functionality on the server:
    EXEC sp_configure 'contained database authentication',1
    GO
    RECONFIGURE
    In SSMS, a new option appears in the ->Security->Users->New User... screen: "SQL User with password"
  • Works for SQL and Active Directory Accounts, e.g. statement for both without logins:
    CREATE USER [testdomain\testuser]
    CREATE USER [biuser]
Notes:
  • Partial containment: in 2012 only the "partial containment" functionality works. In the future a "full containment" option if foreseen
  • Connect from SSMS: you need to specify the database, otherwise the connection attempt fails, because the database is now doing the authentication
  • Security: once a portable user gains access to a contained database through contained database authentication, that user also ends up gaining guest access to all other databases on the host system
  • Conversion: conventional existing users can be converted into portable users through the use of a special stored procedure: sp_migrate_user_to_contained. It provides an argument that you can use to specify whether or not to disable the server-level login -- something you'll typically want to do as a best practice to avoid ugly login problems that can occur when duplicate logins and users overlap each other
  • Downsides: no cross-database joins, linked server use, database mail, possible tempdb colation issues. Use "select * from  sys.dm_db_uncontained_entities" to check containment readiness