Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL server-作业调用过程和过程差异_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server SQL server-作业调用过程和过程差异

Sql server SQL server-作业调用过程和过程差异,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我正在尝试从远程服务器的视图创建表(调用过程UPDATE\u PROC),如下所示: SELECT * INTO table FROM [remote_server\database].DATABASE.dbo.view 而且它工作得很好。 问题是,当我尝试创建一个新作业时,它正在调用以前工作过的存储过程UPDATE\u PROC exec UPDATE_PROC 它不工作并报告: Executed as user: NT AUTHORITY\SYSTEM. The OLE D

我正在尝试从远程服务器的视图创建表(调用过程UPDATE\u PROC),如下所示:

SELECT  *
INTO    table
FROM    [remote_server\database].DATABASE.dbo.view
而且它工作得很好。 问题是,当我尝试创建一个新作业时,它正在调用以前工作过的存储过程UPDATE\u PROC

exec UPDATE_PROC
它不工作并报告:

Executed as user: NT AUTHORITY\SYSTEM. The OLE DB provider "SQLNCLI10" for linked server "remote_server\database" does not contain the table ""DATABASE"."dbo"."view"". The table either does not exist or the current user does not have permissions on that table. [SQLSTATE 42000] (Error 7314).  The step failed
看起来是一样的,但事实并非如此。我做错了什么

更新:

远程服务器是SQL server 2005,作业在SQL server 2008上

我以sa用户的身份登录。过程始终工作,而作业调用存储过程从不工作


作业不是以sa用户的身份运行的,但我不知道应该定义哪个用户以及在哪里执行作业属性……

在我看来,这是一个安全问题。运行作业的用户没有权限访问远程服务器上的表。

在我看来,这是一个安全问题。正在运行作业的用户没有权限访问远程服务器上的表。

您运行第一个查询的用户是谁?看起来作业正在以本地系统用户的身份运行-我怀疑他在远程服务器上有权限。我正在尝试使用sa用户。过程始终有效,作业调用过程never@gaffcz是的,您说了-但是您创建的用于运行该过程的作业不是作为sa运行的,而是作为windows本地系统用户运行的。请看,并尝试将作业步骤设置“运行方式”更改为sa SQL Server用户。我在这里只是随口说说(这并不是真的要回答你的问题),但你知道
更新
是一个很好的选择,对吗?因此,我认为当你用保留字命名一个对象时,不能保证它的行为。对于未来的DBA、开发人员和审计人员,最好为您的存储过程提供一个更具描述性的名称。nj,我在服务器上有非常不同的情况,这是唯一一个命名错误的示例:-)我将重命名它运行第一个查询的用户是什么?看起来作业正在以本地系统用户的身份运行-我怀疑他在远程服务器上有权限。我正在尝试使用sa用户。过程始终有效,作业调用过程never@gaffcz是的,您说了-但是您创建的用于运行该过程的作业不是作为sa运行的,而是作为windows本地系统用户运行的。请看,并尝试将作业步骤设置“运行方式”更改为sa SQL Server用户。我在这里只是随口说说(这并不是真的要回答你的问题),但你知道
更新
是一个很好的选择,对吗?因此,我认为当你用保留字命名一个对象时,不能保证它的行为。对于未来的DBA、开发人员和审计人员,最好为您的存储过程提供一个更具描述性的名称。nj,我在服务器上有非常不同的情况,这只是出于此目的命名错误的示例:-)我将重命名itYop,但我是sa用户,并且过程本身始终在工作…:(@gaffcz当您从SSMS运行它时,您是“sa”(这对您有效),但作业正在NT AUTHORITY\SYSTEM下运行,NT AUTHORITY\SYSTEM是您的本地windows用户。最后,问题在于作业代理的安装中的某个地方,因为它无法正常工作。在下一个sql server上,一切正常….:/Yop,但我是sa用户,并且过程本身始终在工作…:(@gaffcz当您从SSMS运行它时,您是“sa”(为您工作),但作业是在NT AUTHORITY\SYSTEM下运行的,NT AUTHORITY\SYSTEM是您的本地windows用户。最后,问题在于作业代理的安装中的某个地方,因为它无法正常工作。在下一台sql server上,一切正常….:/