Pages

Monday, October 26, 2015

The sp_configure value 'contained database authentication' must be set to 1 in order to create a contained database.

Acum cateva zile a trebuit sa-mi reinstalat sistemul de operare dupa un upgrade nereusit la windows 10.

Cu cateva zile inainte de toata nebunia asta cu reinstalarea sistemului, incepusem lucrul la un proiect in care foloseam ca server de baze de date SQL 2014 Express LocalDB. Nu am mai lucrat pana acum cu LocalDB deoarece intotdeauna am la indemana o instanta de SQL Server Developer Edition. La acest proiect am dorit sa incerc si aceasta versiune.

Dupa reinstalarea sistemului de operare si o parte a programelor necesare dezvoltarii de aplicatii, am deschis proiectul la care lucram in Visual Studio si, din panelul "Server Explorer", am incercat sa atasez baza de date (fisier mdf) la LocalDB . Din pacate am obtinut urmatoarea eroare:

The sp_configure value 'contained database authentication' must be set to 1 in order to create a contained database. You may need to use RECONFIGURE to set the value_in_use. An attempt to attach an auto-named database for file failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

Ce mai este si acest 'contained database authentication'?

Am cautat pe Google.. si asa am aflat de existenta acestor 'contained databases', baze de date ce sunt izolate fata de celelalte baze de date si de instanta SQL Server care le gazduieste.

SQL Server realizeaza aceasta izolare in 4 moduri:
- mare parte din metadatele ce descriu baza de date sunt mentinute in baza de date si nu in baza de date master
- toate metadatele folosesc aceleasi tip de interclasare ("collation")
- autentificarea este facuta de baza de date reducand astfel dependenta de "login"-urile definite in instanta SQL Server
- mediul SQL Server (DMV-urile, XEvent-urile etc) raporteaza si poate actiona asupra informatiilor izolate.

Acest tip de baze de date a aparut incepand cu versiunea 11 a SQL Server (SQL Server 2012). Mai multe detalii despre 'contained databases' se pot gasi pe MSDN, vezi Referinte

Eroare mea s-a rezolvat executand urmatoarele instructiuni:


1
2
3
4
sp_configure 'contained database authentication', 1;
GO
RECONFIGURE;
GO


Instructiunile de mai sus le-am executat din panelul SQL Server Object Explorer => Selectare instanta LocalDb => New Query...

Dupa rularea instructiunilor de mai sus, baza de date a fost atasata fara probleme la instanta LocalDB.


Referinte: 


MSDN - Contained databases: https://msdn.microsoft.com/en-us/library/ff929071.aspx
MSDN - Contained database authentication Server Configuration Option: https://technet.microsoft.com/en-us/library/ff929237.aspx
SQL Server Portal, SQL SERVER 2012 – Fix – Error – 12824 – The sp_configure value ‘contained database authentication’ must be set to 1: http://raresql.com/tag/the-sp_configure-value-contained-database-authentication-must-be-set-to-1-in-order-to-s_msg-a-contained-database-you-may-need-to-use-reconfigure-to-set-the-value_in_use/

No comments: