在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败

原文:在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败

问题:

在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来监控执行作业的是什么账号

时间: 2024-08-26 01:03:59

在SQL Server Management Studio中可以运行作业但是用T-SQL运行则失败的相关文章

SQL Server Management Studio中:黑SQLCMD模式

注意: 这篇文章是专门针对人们已经熟悉了SQLCMD模式在SQL Server Management Studio中.虽然不是非常新颖的,读者应该明白SQLCMD文档中的基本功能. 若对DOS命令Shell有一个基本的了解,也将让你更好的理解下面这些例子. 步骤概述: 本文用于处理动态生成文件,虽然我们在同一个脚本中创建和运行文件,但是随着复杂度的提升结果将会难以预测.所以,公在允许意外丢失的情况下运行该例子. 不,SQLCMD我已经试过了... 如果你像我一样,你可能花了数年进出SQL Ser

[转]删除SQL Server Management Studio中保存的帐户信息

http://www.2cto.com/database/201208/149850.html 删除SQL Server Management Studio中保存的帐户信息 SQL Server 2005 Management Studio 删除以下路径中的mru.dat文件 2003/XP C:\Documents and Settings\Administrator\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell\

MS SQL Server Management Studio中提示不允许保长度出现不允许保存更改。您所做的更改要求删除并重新创建以下表

在SQL Server Management Studio中直接修改正在连接的表结构会出现改不了的情况,如下图 解决方法:工具-选项-设计器--阻止保存要求重新创建表的更改,去掉对勾--确定即可

使用SQL Server Management Studio 创建数据库备份作业

SQL Server 作业无非就是按照规定的时间执行指定的脚本,这里介绍如何用SSMS(SQL Sever 2008)创建作业备份数据库. (0)假设在创建作业之前你所要备份的数据库已经存在:其次,你已经会启动SQL Sever 代理(一般是关闭的) (1)创建SQL Server代理作业 (1.1)新建作业,输出常规信息 如上图:输入作业名称(如:BackupJobTest),这里所有者和类别都是默认的,输入说明(就跟写代码要写注释一样,利人利己) (1.2)设置作业执行步骤 点击左边“选择页

Microsoft OneScript 团队发布的最新一版在 SQL Server Management Studio 中运行的脚本,可以帮助我们获取更详细的版本信息。

该脚本有以下几点: 1. SQL Server 的主要版本.服务级别和版本类别 2. 已安装SP包.累计更新CU,历史更新的QFE\ GDR 3. 推荐当前SP包可以安装最新的CU,并给到相关资源地地址(这个很有帮助) 如Cumulative Update CU6 of SQL Server 2012 SP3. 4. 推荐可升级到其他产品,如: SQL Server 2014 Enterprise SQL Server 2014 Business Intelligence SQL Server

教程:SQL Server Management Studio

此工具由 Microsoft Visual Studio, Management Studio 内部承载,它提供了用于数据库管理的图形工具和功能丰富的开发环境.通过 Management Studio,您可以在同一个工具中访问和管理数据库引擎.Analysis Manager 和 SQL 查询分析器,并且能够编写 Transact-SQL.MDX.XMLA 和 XML 语句.  学习内容 熟悉 Management Studio 的最好方式是进行实践演练.本教程将讲述如何管理 Managemen

SQL Server Management Studio 2012 键盘快捷键(转)

无论是对于DBA还是Developer,键盘快捷键都是很常用的,动动键盘可比鼠标快多了,不过SQL Server 2012对SSMS(SQL Server Management Studio)中的快捷键做了不少改动,尤其是我常用的一些键,给我带来很多麻烦. 我最常用的Ctrl+E(运行查询编辑器的选定部分).Ctrl+L(显示估计的执行计划).Ctrl+M(在查询输出中包括实际执行计划)和Ctrl+R(显示或隐藏查询结果窗格)都不能用了,很是郁闷啊.好在SSMS提供了自定义快捷键的方法.操作方法

SQL Server Management Studio 2008版本的安装

在安装vs 2010后,自动安装了ms sqlServer  2008.ms sqlServer  2008比ms sqlServer  2005改进不少,使用更方便.但是发现SQL Server Management Studio 2005版本不能打开ms sqlServer  2008库,于是决定从网上下载和安装SQL Server Management Studio 2008. 1.从网上下载SQL Server Management Studio 2008. 下载网址如下:http://

Sql Server Management Studio 18 打开闪退问题

解决方案 找到MSSMS安装位置,例如我是安装到了D:\Program Files (x86)\Microsoft SQL Server Management Studio 18 将D:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop文件夹下的Microsoft.VisualStudio.Shell.Interop.8.0.dll 复制到D:\P