博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败
阅读量:6213 次
发布时间:2019-06-21

本文共 745 字,大约阅读时间需要 2 分钟。

原文:

问题:

在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败,反之亦然.

分析:

这种情况多数为执行时上下文(Context)安全性问题。在SSMS中执行的时候,T-SQL语句是在当前登录名下运行的。但是作业在SQL Server Agent中是以SQL Server Agent 服务(SQL Server Agent Service account)运行的,如果SQL Server Agent的账号与在SSMS中执行T-SQL的账号不一样或者权限不同的话,作业就会失败。
本人的实践是使用高权限的账号来运行SQL Server Agent,并且具有独立账号,同时密码不能过期,否则运行一段时间就会运行不了。但是基于“最小安全性原则”,一般不建议使用过高权限。同时,不能使用SQL Server Agent 代理来执行作业,因为T-SQL作业步骤不使用任何代理。对于T-SQL作业步骤,默认是以作业拥有者的安全上下文运行。

解决方法:

方法1:把作业拥有者的权限开放到足够大,但是不要使用sysadmin。
方法2:在T-SQL作业中使用RUN AS USER提示来执行T-SQL作业。这样不需要更改原有的权限。但是此过程确保你有足够的权限赋予RUN AS USER。如图:
方法3:此方法主要是脚本化方法2,在T-SQL的开头加上:
EXECUTE AS USER='xxxx' --上面语句赋予下面执行的脚本xxxx登录用户的权限。 SELECT * FROM HumanResources.Department --运行完后回收权限: REVERT;
最后可以通过SQLServer Profiler来监控执行作业的是什么账号

转载地址:http://unsja.baihongyu.com/

你可能感兴趣的文章
ToRPC:一个双向RPC的Python实现
查看>>
Ubuntu 14 Open Ldap Add Root
查看>>
Vim脚本 - 竖线'|' 和反斜线'\'
查看>>
netty框架的学习笔记 + 一个netty实现websocket通信案例
查看>>
centos下yum安装ffmpeg
查看>>
磁盘超过2T无法用fdisk分区的问题
查看>>
我的友情链接
查看>>
nginx在reload时候报错invalid PID number
查看>>
asp 源码建站
查看>>
神经网络和深度学习-第二周神经网络基础-第二节:Logistic回归
查看>>
Myeclipse代码提示及如何设置自动提示
查看>>
配置OSPF发布聚合路由
查看>>
迭代器 -> 固定的思路. for循环
查看>>
RMQ 问题及解决算法
查看>>
UnicodeDecodeError gbk codec can't decode byte in position illegal multibyte sequence
查看>>
ssd存储的SLC、MLC、TLC闪存芯片颗粒有什么区别?
查看>>
Educational Codeforces Round 26 - A, B, C 思维
查看>>
动态规划-导弹拦截(求最长不上升子序列和最长上升子序列)
查看>>
iOS-本地推送和远程推送,常用的三方推送和常用的测试方法,推送实现和原理详解...
查看>>
Android开发者指南(16) —— Activity and Task Design
查看>>