`
xys_777
  • 浏览: 204716 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

为何将DTS包转成作业时就会出错?

 
阅读更多

为何将DTS包转成作业时就会出错?

DTS包在何处运行?

为什么DTS包成了作业以后就不能正确运行了呢?我们从企业管理器中运行的时候一切正常,但我们把它当成一个作业的时候就不行了。因为它运行不同的环境里,这个环境指的是security context,安全环境或安全上下文。作为程序员你可以在一台工作站前运行程序,那DTS所处的环境就是你面前机器的环境,但如果作为作业,它始终运行在服务器上。

作为程序员,你可以希望从一个文本文件中导入数据,但是DTS中指定的文件必须也存在于服务器上,而且必须有足够的权限支持对这个文件的操作。

那到底是谁运行了DTS包呢?是一个称为SQL Agent的服务,这个作业有一个拥有者,这个拥有者可以是一个SQL SERVER登录也可以是一个NT帐户。可以通过企业管理器来直接查看所有者是谁,也可以通过运行msdb.dbo.sp_help_job来获知谁是拥有者。

对于SQL Server 7.0来说,安全上下文是由作业的所有者决定的。如果所有者是一个不必于Sysadmin角色的用户,包就在SQLAgentCmdExec帐户下运行,当然使用的安全上下文也就是这个帐户的,因此这个帐户必须拥有足够的权限才能够运行指定的操作。通常而言,SQLAgentCmdExec帐户不拥有对服务器以外计算机的权限,因此对别的机器上文件的访问当然就要失败了。

对于SQL Server 2000来说,安全上下文也是作业的拥有者决定。如果所有者是一个不必于Sysadmin角色的用户,包就在SQL Agent Proxy帐户下运行,也使用此用户的权限。对于SQL Agent Proxy来说,它可以运行与数据库相连的操作,当然它也必须拥有相应的数据库和NT权限。对于执行DTS包来说,SQL Agent Proxy Account必须拥有对帐户运行临时目录的读写权限,这也目录是:c:/Documents and Settings/<Account>/Local Settings/Temp

如果作业是被Sysadmin数据库角色的成员拥有,作业即在启动SQL Agent服务的帐户下运行。同时,如果作用被NT域用户拥有,而且包被存储于数据库,你必须使用在同一域或信任域的用户启动SQL Server服务。例如,如果SQL Agent作业由USA域用户所有,那启动SQL Server服务的用户必须是来自USA域或USA域的信任域。如果SQL Server由本地帐户启动,包的执行将失败。如果调度一个DTS包,此时它的拥有者将是谁?此时的拥有者要看登录企业管理器时谁进行了登录,如果数据库使用NT认证,作业的主将是启动SQL Agent服务的NT帐户;如果登录企业管理器的时候使用SQL Server认证(如利用SA登录),那主将是这个SQL SERVER用户。如果希望改变包的拥有者,可以在企业管理中实现,直接右键一击,在”通用“下面就是了。而在查询分析器中则要使用msdb.dbo.sp_update_job来进行。

DTS如果通过DTSRUN.exe运行,那安全上下文就是此时登录计算机的用户。如果通过xp_cmdshell运行如果DTSRUN.exe,如果此用户是Sysadmin角色中的用户,他启动了SQL Server服务,他就是安全上下文。如果是这个用户不是Sysadmin角色中的用户,则DTSRun.exe在SQLAgentCmdExec帐户中运行。如果SQL SERVER以本地帐户启动,DTS包不拥有访问其它机器资源的权限。

如果SQL Server服务在NT帐户下启动,它的权限和NT帐户的权限一致。如果此帐户是一个本地帐户,DTS包不拥有对其它机器的权限;如果此帐户是一个域用户,包可以访问域内其它计算机的资源。有时在DTS包中我们使用一个NT认证连接,此连接的安全上下文与包运行的安全上下文一致。如果在命令行上运行DTSRun.exe,此进行获得的安全证书是当前NT登录用户的证书。如果包以一个作业运行,此连接的安全上下文将是启动SQL Agent的帐户,我们假设包的拥有者是Sysadmin的成员。

我们映射驱动器时包运行会出错,因为映射的驱动器不是物理存在的,而SQL Agent是一个NT服务,NT服务是无法看到映射驱动器的。映射是用户脚本的一部分,服务不会调用用户脚本的内容,请使用UNC路径来解决其它机器上资源的调用。相对路径也最好不要使用,因为DTS包的运行将由调试机转移到服务器,因此相对路径不好用。至于COM组件的使用,一定要确定服务器上也有相应的COM组件。虽然包本身也有一些密码要提供,如包拥有者的密码和用户密码,这些东西和运行环境没有关系。SQLAgentCmdExec的权限如果不足以运行包,会产生下面的错误信息:

DTSRun: Loading... DTSRun: Executing... DTSRun OnStart: DTSStep_DTSExecuteSQLTask_1 DTSRun OnError: DTSStep_DTSExecuteSQLTask_1, Error = -2147217843 (80040E4D) Error string: Login failed for user 'NT_name/SQLAgentCmdExec'. Error source: Microsoft OLE DB Provider for SQL Server Help file: Help context: 0 Error Detail Records: Error: -2147217843 (80040E4D); Provider Error: 18456 (4818) Error string: Login failed for user 'NT_name/SQLAgentCmdExec'. Error source: Microsoft OLE DB Provider for SQL Server Help file: Help context: 0 DTSRun OnFinish: DTSStep_DTSExecuteSQLTask_1 DTSRun: Package execution complete. Process Exit Code 1. The step failed.

你必须给SQLAgentCmdExec足够的登录权利和数据库权限。

分享到:
评论

相关推荐

    MX Player DTS 包

    MX Player DTS 包 ~~~MX Player播放器解决DTS音效解码无声的问题

    Mxplay1.79+解码包+dts音频解码包

    Mxplay1.79+解码包+dts音频解码包

    DTS转换AC3或AAC教程

    包含DTS转换AC3或AAC教程,帮助你转换平常的DTS格式!

    dtb转dts工具,用于windows下反编译dtb二进制文件

    dtb二进制设备树转dts设备树源文件工具,适合windows使用。选择dtb文件后将会自动换成dts源文件。 功能介绍:将设备树dtb文件反编译、转换成dts设备树源文件。

    dtsrundec数据库dts包解密

    ms sql server数据库解密 dts 加密包的,包含解密源代码。 老外c语言写的,只能运行在dos下,用法如下面示例。 DTSRunDec 0xad23423sdfadfsa

    音轨转化DTS转ACC MP3等

    音轨转化DTS转ACC MP3等 很多3D或者蓝光 电影采用的DTS 或者ACC3的音源,而现在大多数机顶盒都不支持DTS。有部分支持也需要破解,这个软件,可以提取出来音轨。并将音轨转化为Mp3等格式。

    dts的vb包转为delphi

    sql server的dts很好用。它可以直接生成vb代码, ...我就做了一些vb转delphi 的工作。只花一晚的时间 肯定有问题,等你来改或提报告给newyj@163.com。不要忘了改好后给我一份。直接调用main函数执行

    DTS转立体声MP3方法

    DTS转立体声MP3方法: 1. 在foobar2000 参数设置 里 点 Diskwriter 2. 在 处理时 一行选中 “使用DSP”,随后点击它最右边的 “转到DSP设置” 3. 右上角“可用的DSP”,选中“5.1声道转立体声”,按“”移动到“当前...

    dts转ac3(EZmkvDTStoAC3)v1.1多国语言绿色免费版

    dts转ac3软件是一款将mkv文件DTS音频格式转换为AC3格式的工具,以便液晶电视读取。傻瓜式的操作,一键即可。 现在下载的高清mkv视频基本上都是多声道的,不是ac3的就是dts的,可是支持dts的播放器却太少。不要说...

    DTS构建组件及其如何完成数据转换服务

    DTS 本身包含多个工具并提供了接口来实现在任何支持OLE DB 的数据源间导入、导出或传递数据,并使这一工作变得简单高效。这意味着不仅可以在SQL Server 数据源间进行数据的转储,而且可以把Sybase, Oracle, ...

    分布式事务系统DTS原理及使用

    DTS 从架构上分为 dts-core 、dts-schedule、 dts-server 两部分,dts-core是一个嵌入客户端应用的 JAR 包,主要负责事务数据的写入和处理;dts-schedule是二阶事务恢复任务,dts-server是一个独立的系统,提供...

    Microsoft SQL Server 2000 DTS 设计器组件 [免费版]

    Microsoft SQL Server 2000 Data Transformation Services (DTS) 包设计器是一种设计工具,在以 SQL Server 2005 Integration Services 包格式升级或重新创建 DTS 包之前,SQL Server 2005 服务器的开发人员和管理员...

    数据转换 DTS(pdf)版

    非常好的工具书,通过超星转换格式,分为两部分转换的,所以只能分开上传!大家就多麻烦了!

    foobar2000 DTS插件

    foobar2000的DTS插件之选用 ...按照图片中红箭头所指把DTS解码器移动到左边就可以了,如果在可以使用的DSP框中没有DTS解码器可以在输出中查看一下是否有dts,如果都没有就去下载一个,按照上面所说操作。

    sql2000 DTS快速入门

    入门级教材,应用方法快速查询,学习DTS

    DTS音频转换为AC3音频工具eac3to

    eac3to是一款可以将DTS音频转换为AC3音频的工具。

    sql server 2000完全实战——数据转换报务(dts)

    sql server 2000完全实战——数据转换报务(dts)

    dts 解码器

    dts 解码器

    4K UHD 2019 DTSX 演示碟2019 DTS Demo Disc某盘下载.txt

    本次的演示内容主要是老片新制,老片重新制作和混音,升级为4K的画面和DTS:X的音轨,效果焕然一新。 影片编码: HEVC(H.265)/DTS:X 时长|容量|分辨率|封装格式 未知 | 35200 MB| 4K/HDR | 蓝光原盘 厂商: DTS ...

    dts音效大师插件文件

    2.0转5.1环绕声 任何普通2.0音乐转5.1环绕声;19种格式(含dts);极大提升音乐包围感、临场感、带入感、效果完美。 U盘音乐 批量制作U盘、SD卡音乐;支持无损、有损、2.0、5.1环绕声;支持14种格式;支持破解大众车型...

Global site tag (gtag.js) - Google Analytics