关于job的问题,有点复杂,请高手指教!!

ghosthjt 2004-07-27 03:23:55
目的: 通过 本地服务器A
向 远程服务器 centalinedata 的数据库 zjweb 的表housedetail 里插入数据.
在查询分析器里运行了 sp_addlinkedserver 和sp_addlinkedsrvlogin 后,
运行:
insert into centalinedata.zjweb.zjweb.housedetail
SELECT * from (
select t1.*,t2.propertyid tag from agency..housedetail t1
left join centalinedata.zjweb.zjweb.housedetail t2
on t1.propertyid=t2.propertyid ) a
where tag is null
成功,记录也成功地插入到centalinedata 的数据库 zjweb 的表housedetail

但是做成job后(也是在本地服务器上),这个语句执行就发生了错误:
用户 'CENTALINE\ZJSQL$' 登录失败。 [SQLSTATE 28000](错误 18456) [SQLSTATE 01000](错误 7312). 步骤失败。

我很奇怪为什么会用这个用户登录?难道说在job里面的登录方式和在查询分析器里运行脚本时的登录方式不一样吗?

怎么做才能使这个脚本也能在job中运作呢?
...全文
220 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghosthjt 2004-07-28
  • 打赏
  • 举报
回复
果然是没有主键的问题啊,谢谢邹建了!
zjcxc 元老 2004-07-28
  • 打赏
  • 举报
回复
你的表中没有主键? 添加一个主键(可以是标识字段设置成主键)试试
ghosthjt 2004-07-28
  • 打赏
  • 举报
回复
把你的这一步改一下:
2.
企业管理器
--管理
--SQL Server代理
--右键你建的作业
--属性
--所有者,选择"<计算机名>\administrator"
--步骤
--编辑作业步骤
--高级
--作为用户运行,选择"本身" <------修改这里
--然后保存所做的更改

然后脚本
delete from centalinedata.zjweb.zjweb.housedetail
出现这种错误:

未能打开表 '"zjweb"."zjweb"."housedetail"'(来自 OLE DB 提供程序 'sqloledb')。 提供程序未能支持行查找位置。 提供程序指出与其它属性或要求发生了冲突。 [SQLSTATE 42000](错误 7306) [SQLSTATE 01000](错误 7312). 步骤失败。
ghosthjt 2004-07-28
  • 打赏
  • 举报
回复
照邹建的方法,发生以下的错误:
不允许用 SETUSER 激活的 Windows NT 用户进行远程访问。 [SQLSTATE 42000](错误 7410). 步骤失败。
为什么啊?
ghosthjt 2004-07-28
  • 打赏
  • 举报
回复
EXEC sp_addlinkedserver 'centalinedata',
'',
'sqloledb',
NULL,
NULL,
'DRIVER={SQL Server};SERVER=centalinedata;UID=zjweb;PWD=centa.web80;'

exec sp_addlinkedsrvlogin @rmtsrvname='centalinedata',
@useself='false',
@locallogin='sa',
@rmtuser='zjweb',
@rmtpassword='centa.web80'

select * from centalinedata.zjweb.dbo.admin
yesterday2000 2004-07-27
  • 打赏
  • 举报
回复
帮你UP一下
zjcxc 元老 2004-07-27
  • 打赏
  • 举报
回复
估计你的链接服务器采用了windows身份验证,建议改用sql 身份验证,这样容易解决帐号及权限的问题.
zjcxc 元老 2004-07-27
  • 打赏
  • 举报
回复
把你创建链接服务器的语句全部帖出来.
ghosthjt 2004-07-27
  • 打赏
  • 举报
回复
邹建你的方法还是不行啊.
edifier2003 2004-07-27
  • 打赏
  • 举报
回复
版主好强阿

帮忙再看看我的帖子吧

http://community.csdn.net/Expert/topic/3175/3175525.xml?temp=6.298465E-02

谢谢
zjcxc 元老 2004-07-27
  • 打赏
  • 举报
回复
1.做如下设置,在作业服务器(job所在的SQL服务器)

我的电脑--控制面板--管理工具--服务
--右键 SQLSERVERAGENT--属性
--登陆--登陆身份
--选择"此帐户"--选择 adinistrator,密码和确认密码中输入你的administrator密码.


2.
企业管理器
--管理
--SQL Server代理
--右键你建的作业
--属性
--所有者,选择"<计算机名>\administrator"
--步骤
--编辑作业步骤
--高级
--作为用户运行,选择"dbo"
--然后保存所做的更改






WangZWang 2004-07-27
  • 打赏
  • 举报
回复
试试, 把本地的computer加入到远程服务器的域中
egxsun 2004-07-27
  • 打赏
  • 举报
回复
to:ghosthjt (天煞孤星),你好!
你用insert语句,如果用update语句,你有没有碰到我的那样的问题的?
比如centalinedata.zjweb.zjweb.housedetail.propertyid包含的前缀数目超过了最大值。最大值为 3 ?
请看看:
http://community.csdn.net/Expert/topic/3210/3210136.xml?temp=.7405054
netcoder 2004-07-27
  • 打赏
  • 举报
回复
把你添加linkedserver和login的 sql语句贴出来,应该和那个有关
ghosthjt 2004-07-27
  • 打赏
  • 举报
回复
应该不是楼上所说的原因吧,这个不能解释为什么在查询分析器里运行这个脚本是可以的!
ghosthjt 2004-07-27
  • 打赏
  • 举报
回复
用户名肯定选过sa了
loverpyh 2004-07-27
  • 打赏
  • 举报
回复
sp_grantdbaccess
为 Microsoft® SQL Server™ 登录或 Microsoft Windows NT® 用户或组在当前数据库中添加一个安全帐户,并使其能够被授予在数据库中执行活动的权限。

语法
sp_grantdbaccess [@loginame =] 'login'
[,[@name_in_db =] 'name_in_db' [OUTPUT]]

参数
[@loginame =] 'login'

当前数据库中新安全帐户的登录名称。Windows NT 组和用户必须用 Windows NT 域名限定,格式为"域\用户",例如 LONDON\Joeb。登录不能使用数据库中已有的帐户作为别名。login 的数据类型为 sysname,没有默认值。

[@name_in_db =] 'name_in_db' [OUTPUT]

数据库中帐户的名称。name_in_db 是 sysname 类型的 OUTPUT 变量,默认值为 NULL。如果没有指定,则使用 login。如果将其指定为 NULL 值的 OUTPUT 变量,则设置 @name_in_db 为 login。当前数据库不必存在 name_in_db。

返回代码值
0(成功)或 1(失败)

注释
SQL Server 用户名可以包含 1 到 128 个字符,包括字母、符号和数字。但是,用户名不能:

含有反斜线符号 (\)。


为 NULL,或为空字符串 ('')。
在使用安全帐户访问数据库之前,必须授予它对当前数据库的访问权。使用 sp_grantdbaccess 仅可以管理当前数据库中的帐户。若要从数据库中删除帐户,请使用 sp_revokedbaccess。

如果当前数据库中没有 guest 安全帐户,而且 login 为 guest,则可以添加 guest 的安全帐户。

sa 登录不能添加到数据库中。

不能从用户定义的事务中执行 sp_grantdbaccess。

权限
只有 sysadmin 固定服务器角色、db_accessadmin 和 db_owner 固定数据库角色的成员才能执行 sp_grantdbaccess。

示例
下面的示例在当前数据库中为 Windows NT 用户 Corporate\GeorgeW 添加帐户,并取名为 Georgie。

EXEC sp_grantdbaccess 'Corporate\GeorgeW', 'Georgie'

lzymagi 2004-07-27
  • 打赏
  • 举报
回复
作业中也有用户名选的啊.你是不是选SA.如果不是有相应权限的用户就会出现这样的错误了

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧