This post is moreover interview question requirement then work related. I didn't see people actually using contained databases.
Why we need Contained databases?
Normally logins are managed at the server level (as logins) and at the database level (as users), so they are defined in two locations. The mapping that connects logins to users gets lost when a database is moved to a different server, which results in orphaned users. When moving a database, the logins must be created on the new server, and must match exactly…otherwise this mapping will be broken.Orphaned users can also cause HA/DR to be compromised in this situation, because of trying to manage logins and users separately. Logins have to be synchronized against secondary or fail-over servers to avoid orphaned users.
With contained databases, you won’t run into the issue of orphaned users. Contained database users do not have to authenticate with the instance. They don’t have to have a corresponding server login. The contained database user has no dependency on the server. They will connect directly to the database.
For applications to connect, they have to specify the database in the application connection string, and include the parameter called ‘initial catalog’ in order to connect directly to the database.
Benefits with AlwaysOn – in case of failover, contained database users will be able to connect to the secondary without creating logins on the instance hosting the secondary.
Development benefits – because developers don’t always know on which instance their database will be deployed, creating a contained database can limit the environmental effects on the database, and can lessen the work and difficulties for the developer.
Administration – Database owners maintain the database settings in the contained database, instead of master database, so it avoids users having to be given sysadmin permissions.
Collation – temp objects are created with the collation of contained database in the case where the server collation is different from database. There is no need to COLLATE anymore. There may be some problems if a session accesses both contained and non-contained databases
/**Enabled Advanced options**/
sp_configure ‘show advanced’, 1;
RECONFIGURE WITH OVERRIDE;
go
/**Enabled Database Containment on Server**/
sp_configure ‘contained database authentication’, 1;
RECONFIGURE WITH OVERRIDE;
go
/**Enabled Database Containment**//
USE MASTER
GO
ALTER DATABASE PrimaryDB SET CONTAINMENT=PARTIAL;
GO
/****For cross db connectivity****/
/****Finding SID of CommonUser SID in PrimaryDB*****/
USE PrimaryDB
GO
SELECT name,sid from sys.database_principals where name ='CommonUser'
GO
/*****DROP and RECREATE CommonUser user in SecondaryDB Database*****/
USE [SecondaryDB]
GO
DROP USER CommonUser
GO
CREATE USER [CommonUser]WITH PASSWORD=N'My$Test123', DEFAULT_SCHEMA=[dbo],
sid =0x01050000000000090300000022662BC1922D5C47895DB97345B7215A
GO
ALTER ROLE [db_datareader] ADD MEMBER [CommonUser]
GO
ALTER ROLE [db_datawriter] ADD MEMBER [CommonUser]
GO
Now we need to run the below trust command on both the databases
Alter Database xxxDB Set TRUSTWORTHY ON
GO
Post trust enabled between the databases, we will be able to query both the databases.
Good to know about container in database.
ReplyDeleteconvert foxpro code to sql
convert visual foxpro database to sql
foxpro database to sql server
import dbf file into sql server
I see you know a lot about this server. You can share your knowledge by making a video for youtube. From here https://soclikes.com you can buy many likes for it
ReplyDeletethanks for sharing this is very helpful
ReplyDeletebetmatik
kralbet
betpark
tipobet
slot siteleri
kibris bahis siteleri
poker siteleri
bonus veren siteler
mobil ödeme bahis
D1GHL
elf bar
ReplyDeletebinance hesap açma
sms onay
İ7MTMK
شركة تسليك مجاري بجدة
ReplyDeleteشركة تنظيف مكيفات بجدة
çeşme
ReplyDeletemardin
başakşehir
bitlis
edremit
JPGEW
salt likit
ReplyDeletesalt likit
XYCİE
شركة كشف تسربات المياه بالاحساء jtV6n2S3Fe
ReplyDelete