前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MSSQL中的传统登录/用户模型 & 包含的数据库用户模型

MSSQL中的传统登录/用户模型 & 包含的数据库用户模型

原创
作者头像
保持热爱奔赴山海
发布2024-02-29 17:03:06
1290
发布2024-02-29 17:03:06

传统的

在传统的连接模型中,通过提供由 Windows 进行身份验证的用户或组凭据,Windows 用户或 Windows 组成员可连接到数据库引擎。 用户也可以同时提供名称和密码,并通过使用 SQL Server 身份验证进行连接。 在这两种情况下,master 数据库必须拥有匹配连接凭据的登录名。

在数据库引擎确认了 Windows 身份验证凭据或验证了 SQL Server 身份验证凭据之后,该连接通常会尝试连接到用户数据库。 若要连接到某个用户数据库,登录名必须映射到(即关联)用户数据库中的某个数据库用户。 连接字符串还可以指定连接到特定数据库,该数据库在 SQL Server 中为可选但在 SQL 数据库中为必需。

重要原则是登录(在 master 数据库中)和用户(在用户数据库中)必须存在,并且彼此相关。 与用户数据库的连接依赖于 master 数据库中的登录。 此依赖关系限制了数据库移动到其他托管 SQL Server 实例或 Azure SQL 数据库服务器的能力。

如果到 master 数据库的连接不可用(例如,进程中出现故障),整个连接时间将会增加,或者连接可能超时。连接不可用可能会降低连接可伸缩性。

包含的

在包含的数据库用户模型中,master 数据库中不存在登录。 相反,身份验证过程发生在用户数据库中。 用户数据库中的数据库用户在 master 数据库中没有关联的登录。

包含的数据库用户模型支持 Windows 身份验证和 SQL Server 身份验证。 在 SQL Server 和 SQL 数据库中均可使用。

要作为包含的数据库用户进行连接,连接字符串必须始终包含用户数据库的参数。 数据库引擎使用此参数了解哪个数据库负责管理身份验证过程。

包含的数据库用户的活动仅限于身份验证数据库。 必须在用户所需的每个数据库中独立创建数据库用户帐户。 若要更改数据库,SQL 数据库用户必须创建一个新的连接。 如果另一个数据库中存在相同的用户,SQL Server 中的包含的数据库用户可以更改数据库。

语法差异?

包含的数据库用户模型示例

参考文档

https://learn.microsoft.com/zh-cn/sql/relational-databases/security/contained-database-users-making-your-database-portable?view=sql-server-ver16

https://learn.microsoft.com/zh-cn/SQL/relational-databases/databases/migrate-to-a-partially-contained-database?view=sql-server-ver16

https://www.cnblogs.com/LuoCore/p/12586321.html

代码语言:sql
复制
如果直接创建,会提示如下错误
USE mydb;
GO
CREATE USER user_name WITH PASSWORD = 'Abcd@1234';
消息 33233,级别 16,状态 1,第 1 行
You can only create a user with a password in a contained database.

需要先执行下面的命令
sp_configure 'contained database authentication', 1; 
GO
RECONFIGURE; 
GO 
ALTER DATABASE mydb SET containment=partial;
GO

查询库是否开启了contained
SELECT name, containment, containment_desc FROM sys.databases;

然后再次执行创建账号的命令
use mydb;
CREATE USER user_name WITH PASSWORD = 'Abcd@1234';

这种方式创建的账号,登陆的时候的库名必须填对应的库,而不是能写master库。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 传统的
  • 包含的
  • 语法差异?
  • 包含的数据库用户模型示例
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com