SQL Server 只读账号/只读登录名可查看存储过程及函数权限

本文主要是介绍SQL Server 只读账号/只读登录名可查看存储过程及函数权限,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公司为了收紧生产数据库的登录名,目前我们公司生产数据库登录名基本赋予了sa账户的权限,这样做是很危险的,所以领导要求给运维同事授予数据库只读查询的账号,但同时又需要让运维同事可查看存储过程,因为存储过程和函数中有很多拦截异常的判断,当提示报错内容时,运维同事可以通过报错的关键字来查找错误是来自程序、存储过程或者是函数等等。

如下是通过关键字查询“自动化设备传入重量为空!请重新称重”:

SELECT 
NAME,[type],CASE 
WHEN [type]='F' THEN N'FOREIGN KEY 约束'WHEN [type]='FN' THEN N'标量函数'WHEN [type]='IF' THEN N'内联表值函数'
WHEN [type]='IT' THEN N'内部表'WHEN [type]='P' THEN N'存储过程'WHEN [type]='PK' THEN N'PRIMARY KEY 约束'
WHEN [type]='S' THEN N'系统基表'WHEN [type]='TF' THEN N'表值函数'WHEN [type]='U' THEN N'表(用户定义类型)'
WHEN [type]='UQ' THEN N'UNIQUE 约束'WHEN [type]='V' THEN N'视图' WHEN [type]='TR' THEN N'触发器' 
ELSE N'不知名名的' END AS 类型名称,create_date,modify_date
FROM sys.objects (NOLOCK) WHERE [object_id] IN (SELECT id FROM sys.syscomments(NOLOCK) WHERE [text] LIKE N'%自动化设备传入重量为空!请重新称重%') 
ORDER BY modify_date DESC

如下是通过关键字找到该报错来自于存储过程“Autogetweight_sp”中

NAME                                                                                                                             type 类型名称           create_date             modify_date
-------------------------------------------------------------------------------------------------------------------------------- ---- -------------- ----------------------- -----------------------
Autogetweight_sp                                                                                                                 P    存储过程           2017-04-28 10:00:47.080 2018-09-10 10:16:53.450(1 行受影响)

 

如下是通过只读账户queryuser(我自己建的只读账户)来查看上面找到的存储过程Autogetweight_sp

sp_helptext 'Autogetweight_sp'--这是查看整个存储过程,如果没有授权只读账户访问存储过程的权限,将会报错。消息 15009,级别 16,状态 1,过程 sp_helptext,行 54 [批起始行 0]
对象 'Autogetweight_sp' 在数据库 '我的生产数据库名' 中不存在或对于此操作无效。

如下开启/撤销只读账户可访问存储过程

USE TCsfc--(生产数据库名)
GRANT VIEW Definition TO queryuser--开启,只读账户queryuser在TCsfc数据库中可查看存储过程及标量值函数的权限USE TCsfc--(生产数据库名)
REVOKE VIEW Definition TO queryuser--撤销,只读账户queryuser在TCsfc数据库中可查看存储过程及标量值函数的权限

开启访问后通过只读账户queryuser来查看上面找到的存储过程Autogetweight_sp,因为存储过程太长就不粘贴复制。

 

这篇关于SQL Server 只读账号/只读登录名可查看存储过程及函数权限的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002694

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python