mssql 中msdb 权限说明

news2024/11/19 21:30:11

msdb

MSDB是Microsoft SQL Server中一个系统数据库,它存储了SQL Server代理作业,备份和还原,数据库维护计划,邮件,日志和数据库相关的其他信息。MSDB数据库包含了许多系统表和视图,例如sysjobs、sysjobhistory、sysoperators等,这些表和视图可以帮助管理员和开发人员查看和管理SQL Server代理作业、备份和还原、数据库维护计划等。MSDB数据库是SQL Server中非常重要的一个系统数据库,如果它出现问题,可能会导致SQL Server无法正常运行。
在这里插入图片描述
不显示。。。
在这里插入图片描述

用户权限

在 Microsoft SQL Server 中,可以使用以下两种方式来查看用户的权限:

  1. 使用 SQL Server Management Studio (SSMS):

    • 打开 SSMS 并连接到 SQL Server 实例。
    • 在对象资源管理器中,展开“安全性”文件夹。
    • 选择“登录名”文件夹,右键单击要查看权限的用户,并选择“属性”。
    • 在“属性”对话框中,选择“用户映射”页面。
    • 在页面上方的“已分配的数据库角色”和“已分配的架构”部分,可以查看用户在每个数据库中所分配的角色和架构。
  2. 使用系统存储过程:

    • 打开 SQL Server Management Studio 并连接到 SQL Server 实例。
    • 新建一个查询窗口,输入以下代码并运行:
    SELECT name FROM sys.databases
    
    USE [database_name]
    GO
    EXEC sp_helprotect NULL, 'username'
    GO
    

    此处的 database_name 是要查看的数据库名称,username 是要查看权限的用户名称。运行后,将会列出用户在该数据库中的所有权限。

OWNER 权限

在 Microsoft SQL Server 中,OWNER 权限是一种数据库级别的权限,它授予用户或角色对数据库的完全控制权,包括对所有对象的 SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER 和 DROP 等权限。具有 OWNER 权限的用户或角色可以执行以下操作:

  • 创建、更改和删除数据库对象,如表、视图、存储过程、触发器等。
  • 分配、更改和删除其他用户或角色的权限,包括对对象的 SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER 和 DROP 等权限。
  • 在数据库中执行任何操作,包括备份和还原。

通常情况下,只有数据库管理员或拥有数据库的所有权的用户才会被授予 OWNER 权限。但是,需要注意的是,授予过多的权限可能会增加安全风险,并可能导致数据泄露或损坏。因此,在授予 OWNER 权限之前,应该进行仔细的评估和授权。

权限授权记录

这是一种 SQL Server 数据库中的权限授权记录,它包含以下字段:

  • Owner:授权的所有者,即授予权限的用户或角色。
  • Object:被授权的对象,如表、视图、存储过程、触发器等。
  • Grantee:被授权的用户或角色。
  • Grantor:授予权限的用户或角色。
  • ProtectType:保护类型,指定授予权限的安全级别,包括 GRANT、DENY 和 REVOKE。
  • Action:被授权的操作,如 SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER 和 DROP 等。
  • Column:被授权的列,即被授权的操作所涉及的列。

这种授权记录可以帮助管理员和开发人员查看和管理数据库对象的权限,包括谁拥有对特定对象的权限、授权者是谁、被授权者是谁、授权的操作是什么等信息。通过这些信息,管理员和开发人员可以更好地控制数据库的安全性,并确保只有授权的用户或角色才能访问和修改数据库对象。
在这里插入图片描述

有两个授权是针对特殊的CDC(Change Data Capture)操作的,其中一个是允许禁用CDC,另一个是允许启用CDC。此外,还有一些授权是针对连接数据库的权限。

在这里插入图片描述

两个授权是针对备份操作的,即拒绝了bpx用户对数据库备份和事务备份的操作权限。
另一个授权是允许bpx用户连接数据库,但没有指定具体的操作权限。
这些授权可以限制不同用户对数据库的操作,从而保证数据库的安全性和完整性。

用户权限 (只读 VS 读写)

在 MSSQL 中,只读用户和读写用户的区别在于其对数据库的操作权限。只读用户只能读取数据库中的数据,而不能修改或删除数据,而读写用户则可以读取、修改和删除数据。

您可以使用以下语句来查看当前用户的权限:

SELECT HAS_PERMS_BY_NAME(DB_NAME(), 'DATABASE', 'SELECT') AS 'Select Permission', HAS_PERMS_BY_NAME(DB_NAME(), 'DATABASE', 'INSERT') AS 'Insert Permission', HAS_PERMS_BY_NAME(DB_NAME(), 'DATABASE', 'UPDATE') AS 'Update Permission', HAS_PERMS_BY_NAME(DB_NAME(), 'DATABASE', 'DELETE') AS 'Delete Permission'

这将返回一个包含当前用户在当前数据库中具有的 SELECT、INSERT、UPDATE 和 DELETE 权限的结果集。如果只读用户没有 UPDATE 和 DELETE 权限,则他们无法修改或删除数据。

读写
在这里插入图片描述
只读
在这里插入图片描述

这个错误通常是因为要切换到的用户不存在或者当前用户没有足够的权限来模拟要切换到的用户。您可以按照以下步骤来解决这个问题:

  1. 确认要切换到的用户存在。您可以使用以下命令来检查要切换到的用户是否存在:

    SELECT name FROM sys.server_principals WHERE name = 'bpx2';
    

    如果返回结果为空,则表示要切换到的用户不存在。

  2. 确认当前用户有足够的权限来模拟要切换到的用户。您可以使用以下命令来检查当前用户是否有足够的权限:

    SELECT * FROM fn_my_permissions(NULL, 'SERVER');
    

    如果返回结果中没有“IMPERSONATE”权限,则表示当前用户没有足够的权限来模拟要切换到的用户。

  3. 如果要切换到的用户存在,并且当前用户有足够的权限来模拟要切换到的用户,则可能是因为要切换到的用户是一个 Windows 身份验证登录,而不是 SQL Server 身份验证登录。在这种情况下,您需要使用以下命令来切换到 Windows 身份验证登录:

    EXECUTE AS LOGIN = 'domain\username';
    

    其中,domain\username 是要切换到的 Windows 身份验证登录的名称。

    注意:您需要在 SQL Server 中启用“身份验证模式”为“混合模式”,才能使用 Windows 身份验证登录。

sqlcmd如何切换用户

在 MSSQL 中使用 sqlcmd 切换用户,可以按照以下步骤操作:

  1. 打开命令提示符或 PowerShell。

  2. 输入以下命令连接到 MSSQL 服务器:

    sqlcmd -S server_name\instance_name -U current_user -P current_password -d database_name
    

    其中,server_name\instance_name 是 MSSQL 服务器的名称和实例名称,current_user 是当前登录用户的用户名,current_password 是当前登录用户的密码,database_name 是要连接的数据库名称。

  3. 输入以下命令切换到另一个用户:

    EXECUTE AS LOGIN = 'new_user';
    

    其中,new_user 是要切换到的用户的登录名。

  4. 输入以下命令执行操作:

    SELECT * FROM table_name;
    

    其中,table_name 是要查询的表名。

  5. 输入以下命令退出新用户身份:

    REVERT;
    
  6. 输入以下命令退出 sqlcmd:

    EXIT;
    

如何查看登录的用户Or数据库

在 MSSQL 中使用 sqlcmd 查看当前登录的数据库和用户,可以按照以下步骤操作:

  1. 打开命令提示符或 PowerShell。

  2. 输入以下命令连接到 MSSQL 服务器:

    sqlcmd -S server_name\instance_name -U current_user -P current_password -d database_name
    

    其中,server_name\instance_name 是 MSSQL 服务器的名称和实例名称,current_user 是当前登录用户的用户名,current_password 是当前登录用户的密码,database_name 是要连接的数据库名称。

  3. 输入以下命令查看当前登录的数据库:

    SELECT DB_NAME() AS [Current Database];
    

    这将返回当前登录的数据库名称。

  4. 输入以下命令查看当前登录的用户:

    SELECT SUSER_SNAME() AS [Current User];
    

    这将返回当前登录的用户的登录名。

  5. 输入以下命令退出 sqlcmd:

    EXIT;
    

sqlcmd如何执行换行的sql语句

在 SQL Server Management Studio (SSMS) 中,我们可以使用换行符来编写多行 SQL 语句。但是,在使用 sqlcmd 命令行工具时,我们需要在 SQL 语句的结尾处添加特殊字符,以指示 sqlcmd 该语句未结束。

以下是几种在 sqlcmd 中编写多行 SQL 语句的方法:

  1. 使用“GO”关键字分隔 SQL 语句:
SELECT * FROM my_table
GO
UPDATE my_table SET column1 = 'value'
GO
  1. 在 SQL 语句的结尾处添加“\”字符:
SELECT * FROM my_table \
WHERE column1 = 'value'
  1. 在 SQL 语句的结尾处添加“;”字符:
SELECT * FROM my_table;
UPDATE my_table SET column1 = 'value';

需要注意的是,以上方法中的“GO”关键字和“\”或“;”字符必须单独一行,否则 sqlcmd 可能无法正确解析 SQL 语句。

在使用 sqlcmd 命令行工具时,可以将上述 SQL 查询语句保存到一个 .sql 文件中,然后使用以下命令执行该文件:

sqlcmd -S server_name -d database_name -i file_path.sql -o output_file.txt

其中,-S 参数指定 SQL Server 实例的名称,-d 参数指定要查询的数据库名称,-i 参数指定包含 SQL 查询语句的文件路径,-o 参数指定输出结果的文件路径和名称。

例如,如果要在名为 MyServer 的 SQL Server 实例上查询名为 MyDatabase 的数据库中所有用户的权限,并将结果保存到名为 output.txt 的文件中,可以使用以下命令:

sqlcmd -S MyServer -d MyDatabase -i C:\query.sql -o C:\output.txt

其中,C:\query.sql 是包含 SQL 查询语句的文件路径,该文件包含上述 SQL 查询语句。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/492060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是网络——计算机网络发展史

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…

面了个4年的测试,自动化测试都不会,真是醉了...

最近面试了一个 4 年经验的软件测试工程师,简历和个人介绍都提到了精通自动化测试和性能测试,于是我就问了几个自动化测试方面的问题: 你使用过哪些自动化测试工具?它们之间有什么区别? 请解释一下 TestNG 框架&#…

分享丨从事设计10年后转行产品经理,总结6种工作差异

作者从设计转行到产品管理,在获得关于产品策略方面更大的话语权同时,也失去了专注于工作本身的自由。经历了角色转变这一过程后,分享了她对于这两个角色在日常生活中差异的些许反思,同时也鼓励大家在转变角色前,先深入…

增强型语言模型——走向通用智能的道路?!?

增强型语言模型——走向通用智能的道路?!? FesianXu 20230325 at Baidu Search Team 前言 继AlphaGo在2016年横扫了人类棋手之后,2022年末的chatGPT横空出世,再次引爆了全球对人工智能技术的热情。基于语言模型的chat…

【react从入门到精通】React父子组件通信方式详解(有示例)

文章目录 前言React技能树通过 props 实现父子组件通信通过 state 实现父子组件通信通过回调函数实现父子组件通信使用 React Context 实现组件通信总结写在最后 前言 在上一篇文章《JSX详解》中我们了解了什么是jsx以及jsx的语法规则。 本文中我们将详细了解React父子组件通信…

详解SpringBoot外部化配置

SpringBoot外部化配置(基于2.4.0以后) Spring Boot可以让你将配置外部化,这样你就可以在不同的环境中使用相同的应用程序代码。 你可以使用各种外部配置源,包括Java properties 文件、YAML文件、环境变量和命令行参数。 属性值可…

【刷题笔记】二维数组地址计算+算法分析+进制转换

目录 一、二维数组地址计算 题目: 分析: 解答: 二、算法分析举例 题目: 分析: 解答: 三、进制转换 题目: 分析: 解答: 一、二维数组地址计算 题目&#xff…

3.19 makefile用法及变量(自定义变量、自动变量、隐含变量)

目录 makefile概述 makefile创建变量的目的 自定义变量 makefile变量的赋值 自动变量 makefile隐含变量 makefile概述 makefile重要性 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 make是一个命令工具,是一个解释makefil…

Docker高频使用命令总结(镜像与容器命令)

目录 一.Docker常用命令总结 1.镜像命令管理 2.容器命令管理 二.Docker镜像操作命令 1.docker search:搜索镜像 2.docker pull:下载镜像 3.docker push:上传镜像 4.docker images:查看本地镜像 5.docker inspect &#x…

全球最大蒸馏体量干邑集团,邀请酣客老王讲授产品设计大师课

酒作为文化符号,寄托着全人类的精神追求,与历史、艺术为伍,充当着国际间友好交流的使者。为了弘扬中国白酒文化,把品质卓越的中国酱酒带到全世界,也为了给中国的烈酒爱好者讲清中外烈酒之间的工艺与文化差异,酣客君丰发起了“中国酱酒世界行”,不远万里探访欧洲各国名酒产区,一…

Flutter学习之旅 -网格布局

GridView列表三种形式 可以通过GridView.count实现网格布局 /* 格式: GridView.count(crossAxisCount: 一行显示数量,children: [component(),...],) */ class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(B…

如何利用问卷工具助力活动开展,实现高效数据收集?

问卷调查是一种常用的活动开展方式,它可以帮助我们更好地了解参与者的需求和意见,为活动的开展提供有力的参考和依据。 1、了解期望和需求:在活动中,我们可以事先通过问卷调查了解参与者的需求、意见、对活动的需求和期望&#x…

PCB制板之前的DFM分析

PCB制板之前的DFM分析 1.华秋DFM分析2.AD18输出IPC文件3.华秋DFM分析开短路 1.华秋DFM分析 1.打开华秋DFM软件,目前先用这软件做DFM分析,主要是简单容易上手操作,并且分析完成之后可以一键下单。 2.将输出的gerber文件导入华秋DFM这个软件…

ubuntu18.04 + 3060 安装测试

分区 在这里,我们进行手动分区,假设你留出的空闲分区为 80G,点击空闲盘符,点击""进行分区,如下: 1)efi:如果是单硬盘,在唯一的一个空闲分区上添加&#xff0…

为项目创建Qframework!

liangxiegame/QFramework: Unity3D System Design Architecture (github.com) 下载这个download 在unity中打开! 就可以啦 ———— 这里总结一下UI和自动脚本两个非常常用的功能: UI https://www.bilibili.com/video/BV1QK411m7g4/?spm_id_from…

美格智能发布基于高通QCS8550处理器的高算力AI模组SNM970,定义未来终端新体验

近日,全球领先的无线通信模组及解决方案提供商美格智能发布了高算力AI模组SNM970。该产品是行业首批基于高通QCS8550处理器开发的AI模组产品,并凭借卓越的8核高通Kryo™ CPU、综合AI算力高达48Tops、支持Wi-Fi 7等特性,助力将运算效能和灵活性…

【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用

博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。博主主页: 是瑶瑶子啦所属专栏: Go语言核心编程近期目标:写好专栏的每一篇文章 文章目录 一、…

YonLinker连接集成平台构建新一代产业互联根基

近日,由用友公司主办的“2023用友BIP技术大会“在用友产业园(北京)盛大召开,用友介绍了更懂企业业务的用友BIP-iuap平台,并发布了全面数智化能力体系,助力企业升级数智化底座,加强加速数智化推进…

入门机器学习,华盛顿大学4个案例分享

机器学习是一门从数据中研究算法的多领域交叉学科,研究计算机如何模拟或实现人类的学习行为。现在,我们可以看到很多机器学习的实际应用,例如语音搜索技术、图像识别、自动翻译、自动驾驶汽车等。机器学习已经成为许多行业的焦点,…