web-dev-qa-db-fra.com

Vous pouvez uniquement créer un utilisateur avec un mot de passe dans une base de données contenue

J'utilise une base de données contenue, après avoir créé la base de données, j'ai tenté de créer un utilisateur mais j'ai eu l'erreur:

Vous ne pouvez créer un utilisateur avec un mot de passe que dans une base de données contenue

Mon code est:

sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'contained database authentication', 1
GO
RECONFIGURE WITH OVERRIDE
GO
CREATE DATABASE [MyDb]
CONTAINMENT = PARTIAL
ON PRIMARY
( NAME = N'My', FILENAME = N'C:\My.mdf')
LOG ON
( NAME = N'My_log', FILENAME =N'C:\My_log.ldf')
CREATE USER MyUser
WITH PASSWORD = 'pass@123';
GO
22
Faisal Ashfaq

Je pense que votre base de données actuelle est [master], mais vous devez utiliser [MyDb]

USE [MyDb]
GO
CREATE USER MyUser
WITH PASSWORD = 'pass@123';
GO
7

Dans SQL Server 2017 , j'ai constaté que ma configuration initiale n'avait pas configuré la fonctionnalité "bases de données contenues" pour aider cela.

ainsi, au niveau du serveur, vous pouvez vérifier les propriétés du serveur dans l'interface utilisateur ou exécuter:

EXEC sp_configure 'CONTAINED DATABASE AUTHENTICATION'

si la valeur courante n'est pas 1, alors:

EXEC sp_configure 'CONTAINED DATABASE AUTHENTICATION', 1
GO
RECONFIGURE
GO

Au niveau de la base de données, il se peut également que la fonctionnalité "base de données contenue" ne soit pas entièrement activée. L'option se trouve dans le panneau Propriétés de la base de données dans la section Options, la quatrième liste déroulante en haut ...

Type de confinement == Aucun ou partiel

Vous pouvez également le définir via SQL. par exemple:

USE [master]
GO
ALTER DATABASE [MyDb] SET CONTAINMENT = PARTIAL
GO

par la suite, vous pouvez créer l'utilisateur contenu comme suggéré par @ aleksandr

USE [MyDb]
GO
CREATE USER MyUser WITH PASSWORD = 'pass@123';
GO
27
buzzard42

Créez le login et l'utilisateur séparément:

CREATE LOGIN MyUser WITH PASSWORD = 'pass@123';
CREATE USER MyUser FOR LOGIN MyUser;  

Les noms peuvent être les mêmes mais bien sûr ils peuvent aussi être différents.

20
Alpi Murányi