Fai*_*faq 20 sql sql-server sql-server-2012
我正在使用一个包含的数据库,在创建数据库之后我试图创建一个用户,但是我得到了错误:
您只能在包含的数据库中创建具有密码的用户
我的代码是:
sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'contained database authentication', 1
GO
RECONFIGURE WITH OVERRIDE
GO
Run Code Online (Sandbox Code Playgroud)
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')
Run Code Online (Sandbox Code Playgroud)
CREATE USER MyUser
WITH PASSWORD = 'pass@123';
GO
Run Code Online (Sandbox Code Playgroud)
小智 23
在SQL Server 2017中,我发现我的初始设置没有配置"包含数据库"功能来帮助实现这一目标.
因此,在服务器级别,您可以在UI中检查服务器属性或运行:
EXEC sp_configure 'CONTAINED DATABASE AUTHENTICATION'
Run Code Online (Sandbox Code Playgroud)
如果运行值不是1,则:
EXEC sp_configure 'CONTAINED DATABASE AUTHENTICATION', 1
GO
RECONFIGURE
GO
Run Code Online (Sandbox Code Playgroud)
在数据库级别,它也可能没有完全启用"包含数据库"功能.该选项位于"选项"部分的"数据库属性"面板中,顶部的第四个下拉列表...
遏制类型==无或部分
您也可以通过SQL进行设置.例如:
USE [master]
GO
ALTER DATABASE [MyDb] SET CONTAINMENT = PARTIAL
GO
Run Code Online (Sandbox Code Playgroud)
之后,您可以按照@aleksandr的建议创建包含的用户
USE [MyDb]
GO
CREATE USER MyUser WITH PASSWORD = 'pass@123';
GO
Run Code Online (Sandbox Code Playgroud)
Alp*_*nyi 17
分别创建登录名和用户:
CREATE LOGIN MyUser WITH PASSWORD = 'pass@123';
CREATE USER MyUser FOR LOGIN MyUser;
Run Code Online (Sandbox Code Playgroud)
名称可以相同,但当然也可以不同。
我认为您当前的数据库是[master],但是您必须使用[MyDb]
USE [MyDb]
GO
CREATE USER MyUser
WITH PASSWORD = 'pass@123';
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19445 次 |
| 最近记录: |