mssql 中msdb 权限说明

news/2024/11/30 6:52:56/

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.databasesUSE [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.ppmy.cn/news/61972.html

相关文章

mysql数据之表管理-mysql高级管理

1. #创建表tt01 #对id字段设置零填充约束、主键约束、自增长约束 #对name字段设置非空约束、默认值约束 #对cardid字段设置非空约束、唯一键约束 插入数据记录: 1)因为id字段设置了自增长,如果不指定id字段值,则默认从1开始递…

Camtasia2023最好用的电脑屏幕录制软件

Camtasia2023是市场上最好的录像机和屏幕录制软件之一。强大的软件视频编辑程序的Camtasia 适用于Windows和iOS。 它支持多种流行的媒体格式,并对您创建的视频提供令人印象深刻的控制范围。3000多万专业人士在全球范围内使用Camtasia展示产品,教授课程&a…

红外遥控且自动避障的嵌入式智能小车系统

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 本次实验使用树莓派作为开发平台,AlphaBot 作为开发载体,Python 作为开发语言,开发一种基于红外线遥控控制的、可自动避障的嵌入式智能小车系统。 智能系统中的嵌入式应用 实验目的 嵌入式…

Python使用phonenumbers库实现电话号码解析

phonenumbers是一个Python库,用于解析、验证和格式化国际电话号码。它支持多种格式的电话号码,包括E.164、国际、国内和RFC 3966等格式。本文将介绍如何使用phonenumbers库来解析电话号码。 安装phonenumbers库 在使用phonenumbers库之前,需…

武忠祥老师每日一题||定积分基础训练(九)

∫ 0 1 ln ⁡ ( 1 x ) ( 2 − x ) 2 d x \int_{0}^{1}\frac{\ln (1x)}{(2-x)^2}\,{\rm d}x ∫01​(2−x)2ln(1x)​dx 根据题目的特点,有对数函数、有理函数,两种不同类型的函数相乘,对此,应用分部积分法。 当出现对数后&#xff…

输入捕获模式测频率、PWMI模式测频率占空比

一、知识点 TIM输入捕获模式: 1、输入捕获模式测频率占空比 信号源:产生一个频率和占空比可调的波形 无信号发生器的情况:先用PWM模块,在PA0端口输出一个频率和占空比可调的波形,把PA0和PA6连在一起,PA6为输…

单片机作业3

1.下列指令能使R0低4位不变,高4位置F的是_____。 A、ANL R0,#0F0HB、ORL R0,#F0HC、ORL R0,#0FHD、ORL R0,#0F0H 我的答案:D ORL:逻辑或 ANL:逻辑与 16进制,所以F前…

认识监听器(Listener)

监听器是什么? 监听器(Listener)是一种运行在后台的程序,它主要用于监控某些事件在系统中的发生,并且根据这些事件做一些特定的处理。在Web应用程序中,监听器可以观察ServletContext、HttpSession以及Serv…