chj3851 发表于 2007-9-11 21:09:23

[讨论]sybase 代理表的实现与测试

<strong>SYBASE如何跨server操作?<wbr></wbr><br/><br/></strong>1.&nbsp;在远程服务器及本地服务器<br/>sp_addserver&nbsp;local_server_name,local<br/>重新启动保证设置生效<br/><br/>2.&nbsp;在本地主机中使用&nbsp;dsedit添加远程服务器的接口<br/>&nbsp;&nbsp;&nbsp;注:在AIX或者LINUX系列系统中,修改interfaces文件(注意保存原来的interfaces的备份)<br/>3.&nbsp;在本地服务器上添加远程服务器名称<br/><br/>sp_addserver&nbsp;remote_server_name,ASEnterprise,server_net_name<br/><br/>2,3步骤应该在本地服务器及远程服务器两方都进行添加<br/><br/>4.&nbsp;设置远程服务器选项<br/><br/>exec&nbsp;sp_addserver&nbsp;远程服务器逻辑名称,类型,本地DSEDIT配置的服务器名称<br/><br/>exec&nbsp;sp_addserver&nbsp;sybcdsrv,&nbsp;sql_server,&nbsp;ase12&nbsp;<br/>exec&nbsp;sp_serveroption&nbsp;sybcdsrv,&nbsp;"timeouts",&nbsp;true&nbsp;<br/>exec&nbsp;sp_serveroption&nbsp;sybcdsrv,&nbsp;"net&nbsp;password&nbsp;encryption",&nbsp;false&nbsp;<br/>exec&nbsp;sp_serveroption&nbsp;sybcdsrv,&nbsp;"readonly",&nbsp;false&nbsp;&nbsp;&nbsp;(只对CIS生效)<br/>exec&nbsp;sp_serveroption&nbsp;sybcdsrv,&nbsp;"rpc&nbsp;security&nbsp;model&nbsp;A",&nbsp;true&nbsp;<br/>go<br/><br/>5.&nbsp;增加远程用户与本地用户的映射关系<br/><br/>sp_addremotelogin&nbsp;remote_server_name,local_login,remote_login<br/><br/>local_login及remote_login均为服务器上已经存在的login<br/>local_login跟remote_login口令应该一致,如果不一致,在<br/>Open&nbsp;Client&nbsp;Client-Library编程中可以使用&nbsp;ct_remote_pwd&nbsp;命令进行设置<br/>但在isql&nbsp;及&nbsp;bcp&nbsp;中不允许指定&nbsp;rpc&nbsp;口令<br/><br/>另外,一旦到远程服务器的连接建立成功,在退出当前会话前,不论远程服务器是否对相关remote_login进行了口令更改,远程存储过程的调用及其他远程操作都可以进行。<br/><br/>5.&nbsp;设置服务器之间的信任关系<br/><br/>sp_remoteoption&nbsp;remote_server_name,local_login,remote_login,trusted,true<br/><br/>6.&nbsp;调用远程存储过程<br/><br/>isql&nbsp;-Usa&nbsp;-P&nbsp;-Slocal_server_name<br/>1&gt;;exec&nbsp;remote_server_name.database_name.owner_name.procedure_name<br/>2&gt;;go<br/><br/>另外可以在&nbsp;isql&nbsp;中使用connect&nbsp;remote_server_name命令连接到远程服务器上,以测试远程服务器是否配置正常、网络是否正常、远程服务器是否接受连接。<br/><br/>除了远程存储过程调用方式,也可以采用其他一些方式对远程服务器上的数据进行更改,其中包括建立代理表,使用sp_remotesql等方式。具体操作方法请参见ASE命令参考手册及相关文档。<br/><br/>sp_remotesql&nbsp;ase12,"insert&nbsp;into&nbsp;pubs2..tr1&nbsp;values(09,'test&nbsp;remote&nbsp;sql')"<br/><br/>其他信息:<br/><br/>还可以使用代理表<br/><br/>所对应远程服务器表&nbsp;信息&nbsp;在系统表&nbsp;sysattributes&nbsp;中&nbsp;char_value&nbsp;字段

chj3851 发表于 2007-9-11 21:10:08

<strong>SYBASE如何跨server操作?<br/><br/><wbr></wbr></strong>例子两台ASE服务器名称为&nbsp;Server1,Server2,需要在Server1中建立代理表,并通过Server1上的存储过程对Server1自身及Server2中表进行更新<br/>1.&nbsp;建立代理表<br/>&nbsp;&nbsp;&nbsp;&nbsp;在Server2数据库pubs2建立表t_testproxy<br/>&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;table&nbsp;t_testproxy&nbsp;(id&nbsp;int,name&nbsp;char(10))<br/>&nbsp;&nbsp;&nbsp;&nbsp;在Server1数据库test中添加代理表信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use&nbsp;test<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;go<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;proxy_table&nbsp;t_testproxy&nbsp;at&nbsp;"Server2.pubs2.dbo.t_testproxy"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;代理表名与原表名可以不同<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Server1上查看代理表&nbsp;信息如下:<br/><br/>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Owner&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object_type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>t_testproxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>Data_located_on_segment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When_created&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>-----------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nov&nbsp;28&nbsp;2002&nbsp;11:59AM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>Column_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Length&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prec&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scale&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nulls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default_name&nbsp;&nbsp;&nbsp;&nbsp;Rule_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Access_Rule_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Identity&nbsp;&nbsp;&nbsp;&nbsp;<br/>-----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----------&nbsp;-----------&nbsp;-----------&nbsp;-----------&nbsp;------------&nbsp;&nbsp;&nbsp;&nbsp;---------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----------&nbsp;<br/>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;<br/>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;<br/><br/>exp_row_size&nbsp;reservepagegap&nbsp;fillfactor&nbsp;&nbsp;max_rows_per_page&nbsp;identity_gap&nbsp;<br/>------------&nbsp;--------------&nbsp;-----------&nbsp;-----------------&nbsp;------------&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;<br/><br/>concurrency_opt_threshold&nbsp;<br/>-------------------------&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;<br/><br/>Object&nbsp;is&nbsp;Remote/External<br/>-------------------------<br/>presales.pubs2.dbo.t_testproxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style="LINE-HEIGHT: 1.3em;">&nbsp;//可从此处看出代理表所指向的真正对象</font><wbr></wbr><br/><br/>Object&nbsp;created&nbsp;with&nbsp;'existing'&nbsp;option<br/><br/>Object&nbsp;does&nbsp;not&nbsp;have&nbsp;any&nbsp;indexes.<br/>No&nbsp;defined&nbsp;keys&nbsp;for&nbsp;this&nbsp;object.<br/>Object&nbsp;is&nbsp;not&nbsp;partitioned.<br/>Lock&nbsp;scheme&nbsp;Allpages<br/>The&nbsp;attribute&nbsp;'exp_row_size'&nbsp;is&nbsp;not&nbsp;applicable&nbsp;to&nbsp;tables&nbsp;with&nbsp;allpages&nbsp;lock&nbsp;scheme.<br/>The&nbsp;attribute&nbsp;'concurrency_opt_threshold'&nbsp;is&nbsp;not&nbsp;applicable&nbsp;to&nbsp;tables&nbsp;with&nbsp;allpages&nbsp;lock&nbsp;scheme.<br/><br/><br/>2.&nbsp;代理表测试<br/>&nbsp;&nbsp;&nbsp;&nbsp;Server2上插入数据:<br/>&nbsp;&nbsp;&nbsp;&nbsp;insert&nbsp;into&nbsp;t_testproxy&nbsp;values(1,'Server2')<br/>&nbsp;&nbsp;&nbsp;&nbsp;Server2上插入数据:<br/>&nbsp;&nbsp;&nbsp;&nbsp;insert&nbsp;into&nbsp;t_testproxy&nbsp;values(2,'Server1')<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Server1上查询数据:<br/>&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;from&nbsp;t_testproxy<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>-----------&nbsp;----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;Server2&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;Server1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>3.&nbsp;视图测试<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在Server1上test数据库中建立用户表t_testproxyview<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;table&nbsp;t_testproxyview&nbsp;(id&nbsp;int,address&nbsp;varchar(30)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;插入测试数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert&nbsp;into&nbsp;t_testproxyview&nbsp;(1,'Chengdu')<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert&nbsp;into&nbsp;t_testproxyview&nbsp;(2,'Sichuan')&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert&nbsp;into&nbsp;t_testproxyview&nbsp;(3,'sky')<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;建立视图<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;view&nbsp;v_proxy&nbsp;as&nbsp;select&nbsp;a.*,b.address&nbsp;from&nbsp;t_testproxy&nbsp;a,t_testproxyview&nbsp;b<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;a.id&nbsp;=&nbsp;b.id<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查询视图<br/>select&nbsp;*&nbsp;from&nbsp;v_proxy<br/><br/>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>-----------&nbsp;----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;Server2&nbsp;&nbsp;&nbsp;&nbsp;Chengdu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;Server1&nbsp;&nbsp;&nbsp;&nbsp;Sichuan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;视图的更新<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update&nbsp;v_proxy&nbsp;set&nbsp;address&nbsp;=&nbsp;'test'&nbsp;where&nbsp;id&nbsp;=&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;更新本地表&nbsp;执行成功&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update&nbsp;v_proxy&nbsp;set&nbsp;name&nbsp;=&nbsp;'test'&nbsp;where&nbsp;id&nbsp;=&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;更新远程表&nbsp;报告错误如下:<br/>The&nbsp;optimizer&nbsp;could&nbsp;not&nbsp;find&nbsp;a&nbsp;unique&nbsp;index&nbsp;which&nbsp;it&nbsp;could&nbsp;use&nbsp;to&nbsp;scan&nbsp;table&nbsp;'pubs2.dbo.t_testproxy'&nbsp;for&nbsp;cursor&nbsp;'C11'.&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;必须为远程表建立&nbsp;主键或者唯一索引<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Server2上执行(不能在Server1上为代理表建立主键):<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alter&nbsp;table&nbsp;t_testproxy&nbsp;add&nbsp;constraint&nbsp;pk_t_testproxy&nbsp;primary&nbsp;key&nbsp;(id)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update&nbsp;v_proxy&nbsp;set&nbsp;name&nbsp;=&nbsp;'test'&nbsp;where&nbsp;id&nbsp;=&nbsp;2&nbsp;再次更新代理表,成功<br/><br/>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>-----------&nbsp;----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;Server2&nbsp;&nbsp;&nbsp;&nbsp;Chengdu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对试图中本地表及代理表同时作更新<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update&nbsp;v_proxy&nbsp;set&nbsp;name&nbsp;=&nbsp;'test1',address&nbsp;=&nbsp;'test1'&nbsp;where&nbsp;id&nbsp;=&nbsp;1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;报告错误:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;View&nbsp;'v_proxy'&nbsp;is&nbsp;not&nbsp;updatable&nbsp;because&nbsp;the&nbsp;FROM&nbsp;clause&nbsp;names&nbsp;multiple&nbsp;tables.&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sybase不支持在视图中一次更新多表<br/><br/>4.&nbsp;存储过程测试<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在Server1上<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;proc&nbsp;p_proxy(@id&nbsp;int)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;tran<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update&nbsp;t_testproxy&nbsp;set&nbsp;name&nbsp;=&nbsp;'test3'&nbsp;where&nbsp;id&nbsp;=&nbsp;@id&nbsp;&nbsp;--更新代理表<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update&nbsp;t_testproxyview&nbsp;set&nbsp;address&nbsp;=&nbsp;'test3'&nbsp;where&nbsp;id&nbsp;=&nbsp;@id<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;commit<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exec&nbsp;p_proxy&nbsp;2<br/><br/>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>-----------&nbsp;----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;Server2&nbsp;&nbsp;&nbsp;&nbsp;Chengdu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;test3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;结论:可以在存储过程中对本地及远程表进行操作,并利用事务来保证一致性<br/><br/><font face="Tahoma" size="2" style="LINE-HEIGHT: 1.3em;"><font color="#330099" style="LINE-HEIGHT: 1.3em;"><font color="#cc0000" style="LINE-HEIGHT: 1.3em;">需要注意一点的是</font><wbr></wbr>:</font><wbr></wbr>建代理表时,远程表的结构数据已经存储在了本地,并且不会检测该表的结构是否发生改变,因此远程表的结构发生改变时,本地是不知道的,需要重新创建代理表,相当于重新刷新本地的存储的结构.</font><wbr></wbr><br/><font face="Tahoma" size="2" style="LINE-HEIGHT: 1.3em;">5、代理表的索引问题。</font><wbr></wbr><br/><font face="Tahoma" size="2" style="LINE-HEIGHT: 1.3em;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如上注意中提到,修改表结构后,需要重新建立代理表,代理表的索引会根据源表的索引一起建立成功。另外一种方法:手工建立临时表;在源表中添加索引后,手工在临时表中添加。</font><wbr></wbr><br/>ALTER&nbsp;TABLE&nbsp;temp_c**_*est<br/>ADD<br/>CONSTRAINT&nbsp;id_id&nbsp;PRIMARY&nbsp;KEY&nbsp;CLUSTERED&nbsp;(id)&nbsp;<br/>&nbsp;<br/>有什么问题,找到解决方法后再添加<img src="http://imgcache.qq.com/qzone/em/e7.gif" alt=""/><wbr></wbr>
页: [1]
查看完整版本: [讨论]sybase 代理表的实现与测试

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com