Eisen 发表于 2011-07-29 15:36

一个动态sql的问题

最近在使用RPC的时候发现这么一个问题——
两个ASE ServerA,B,两边的rpc配置均已完毕,并且测试成功。
先在A上建这样一个过程——
create procedure p_prtest
@remote varchar(30),
@db   varchar(30),
@tb   varchar(50)
as
begin
      declare @cmdstr varchar(500)
      select @cmdstr='create proxy_table pr_tmp at "'+@remote+'.'+@db+'..'+@tb+'"'
      select @cmdstr
      execute(@cmdstr)--proxy table creation part
      
      select @cmdstr='select * from pr_tmp'
      execute(@cmdstr)--test part
      
      select @cmdstr='drop table pr_tmp'
      execute(@cmdstr)
end
go
在A上执行 exec p_prtest "B","db","tb1"完全正确,可以看到那个生成代理表的语句为—— create proxy_table pr_tmp at "B.db..tb1"
但是到了B或者任何其它Server上用RPC调用的时候,例如在B上执行 exec A.db..p_prtest "B","db","tb1"就要报错说——
Msg 11204, Level 16, State 23:
Server 'A', Line 1:
There is an error in the syntax of the object definition '"B.db..tb1"'.
但是可以看到被执行的那句动态sql同样也是——create proxy_table pr_tmp at "B.db..tb1"

弟兄们可否知道这是怎么回事?谢谢。

Eisen 发表于 2011-07-29 17:11

经查,这个问题仅在ASE15.0.3 ESD#4上出现,在ASE12.5.4 ESD#4, ASE15.0.2 ESD#5和ASE15.5 ESD#3上都是对的。要命啊……偏巧我的生产环境就是ASE15.0.3 ESD#4啊……

hefan 发表于 2011-08-02 11:43

我的环境是ESD3,准备升到ESD4,有空测试一下。

Eisen 发表于 2011-08-02 12:52

问题越发明白——仅在ASE15.0.3 ESD#4 for AIX上有,别的环境都没有,包括同version的win ,linux和Sun平台都没问题,唯独AIX平台上这个版本有问题……
页: [1]
查看完整版本: 一个动态sql的问题