在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败
来源:互联网 发布:淘宝直通车收费贵 编辑:程序博客网 时间:2024/05/16 02:05
问题:
在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来监控执行作业的是什么账号
- 在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败
- 在Vista中使用SQL Server 2005 Management Studio 连接本地失败
- SQL Server 2005 Management Studio安装失败
- SQL Server代理作业运行SSIS包失败
- 在SQL Server Management Studio中还原数据库
- SQL Server:在Management Studio中使用Web浏览器
- 在SQL Server Management Studio (SSMS)中使用字体颜色
- 在SQL Server Management Studio中使用手动提交更改
- 在SQL Server Management Studio 中建立外键约束
- 在SQL Server 2005中运行CLR
- 在虚拟环境中运行SQL Server
- SQL Server Management Studio
- SQL Server Management Studio
- 代码调用存储过程超时,SQL Server Management Studio里运行很快
- 代码调用存储过程超时,SQL Server Management Studio里运行很快
- 代码调用存储过程超时,SQL Server Management Studio里运行很快 (改进)
- 使用SQL Server Management Studio 创建数据库备份作业
- 怎样在SQL 2005的Microsoft SQL Server Management Studio Express管理器中导入/导出数据
- 单链表 与 环 的相关问题
- Delphi ADO连接Oracel之怪情况(四)
- Redhat Linux文件共享服务Samba的安装配置
- 分群源程序
- JAVA配置文件解析
- 在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败
- 云计算相关软件介绍
- mysql里面的时间函数
- Spring中EmptyResultDataAccessException异常的处理方法
- shell逻辑运算
- C++中虚函数的实现背后
- ubuntu下通过ufw配置nat
- errno perror strerror strerror_r
- centso5下使用coreseek(sphinx)建立搜索引擎