分布式怎么这么麻烦啊,我想用local的存储过程调用remote的存储过程,为什么总出错啊???????急急急 exec('bbs.dvbbs.dbo.proc_UserReg ''+@UserID+'', ''+@PassWord+'', ''+@Sex+'', ''[127.0.0.1]''') 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Distributed Transaction Coordinator服务是否启动? exec ('bbs.dvbbs.dbo.proc_UserReg ''' + @UserID + ''', ''' + @PassWord + ''', ''' + @Sex + ''', ''127.0.0.1''') exec ('bbs.dvbbs.dbo.proc_UserReg '''+@UserID+''', '''+@PassWord+''', '''+@Sex+''', ''127.0.0.1''') 是不是应该在asp.net/ado.net里想办法啊? 应该是单引号个数的问题吧exec ('bbs.dvbbs.dbo.proc_UserReg '''+@UserID+''', '''+@PassWord+''', '''+@Sex+''', ''127.0.0.1''') 给个建议,先别关注存储过程,你应该先测试一下你的远程连接建立成功没有!我给你个建立远程连接的例子。使用sql-server进行分布式查询(链接服务器) 可以使用sql-server企业管理器进行建立,注意其中的rpc及rpc out两项,也可以使用sql语句来完成定义,主要涉及到三个存储过程sp_addlinkedserver,sp_serveroption和sp_addlinkedsrvlogin,以下是三个存储过程的语法:sp_addlinkedserver创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft? SQL Server?,则可执行远程存储过程。语法sp_addlinkedserver [ @server = ] 'server'[ , [ @srvproduct = ] 'product_name' ][ , [ @provider = ] 'provider_name' ][ , [ @datasrc = ] 'data_source' ][ , [ @location = ] 'location' ][ , [ @provstr = ] 'provider_string' ][ , [ @catalog = ] 'catalog' ]例如:sp_addlinkedserver 'ServerName','','SQLOLEDB','dbconn',null,'driver={sql server};server=192.168.1.181;uid=sa,pwd=;'此处ServerName为自定义名称,dbconn为定义的odbc数据源一般使用的参数如下:@server “LINKED SERVER”@srvproduct “Product name”@provider “Provider”@datasrc “Data source”二、设置服务器选项使用 sp_serveroption 过程,所要使用的参数如下:@server “Linked server” @optname “RPC”或“RPC OUT”@optvalue True 或 False三、添加Login使用 sp_addlinkedsrvlogin 过程,所要使用的参数如下:@rmtsrvname “Linked server”@useself True 或 False@locallogin 本地LOGIN@rmtuser 远程用户 @rmtpassword 远程用户口令全部完整的示例如下:exec sp_helpserver /*---查看远程服务器的列表-------*/ exec sp_helplinkedsrvlogin /*------查看远程服务器的登录用户---------*/exec sp_droplinkedsrvlogin 'sestlserver',null /*----删除远程服务器的登录用户-----*/exec sp_dropserver 'sestlserver','droplogins'/*-----删除远程服务器------*/EXEC sp_addlinkedserver 'sestlserver','','SQLOLEDB','sestlserver',null,'driver={sql server};server=192.168.0.2;uid=sa,pwd=tianqibuhao;'exec sp_serveroption N'sestlserver', N'rpc out', N'true' exec sp_serveroption N'sestlserver', N'rpc', N'true'exec sp_addlinkedsrvlogin 'sestlserver','False',null,'sa','tianqibuhao'/*------建立一个远程的连接服务器---------*//*---在远程服务器上建立一个表----*/create table tb2(学号 int,科目 varchar(20),成绩 int)学号 科目 成绩 ----------- ---------- ----------- 6 政治 506 英语 707 语文 807 数学 907 英语 71/*---在本地服务器上建立一个表----*/create table tb1(学号 int,科目 varchar(20),成绩 int)学号 科目 成绩 ----------- ---------- ----------- 1 语文 601 数学 701 英语 751 政治 602 语文 552 数学 532 英语 713 语文 804 数学 05 英语 91/*---在本地服务器上建立一个分布视图----*/creat view student as select * from tb1union all select * from sestlserver.test.dbo.tb2/*---查询分布视图----*/select * from student学号 科目 成绩 ----------- ---------- ----------- 1 语文 601 数学 701 英语 752 语文 552 数学 532 英语 713 语文 804 数学 05 英语 911 政治 606 政治 506 英语 707 语文 807 数学 907 英语 71 我把这句存储过程在查询分析器里调用是没有问题的:bbs.dvbbs.dbo.proc_UserReg 'uuuuuu','uuuuuu',1,'127.0.0.1'但放入这个程序里就出错!!!!!!!!!!!!!!!!!! exec('bbs.dvbbs.dbo.proc_UserReg '''+@UserID+''', '''+@PassWord+''', '''+@Sex+''', ''[127.0.0.1]''') ('bbs.dvbbs.dbo.proc_UserReg '''+@UserID+''', '''+@PassWord+''', '''+@Sex+''', ''[127.0.0.1]''')不要老往这句话想,想想别的办法,那位高手帮我试一下啊????????????或者用asp.net中的事务处理,只要能解决就好啊!!!!!!! 在.net 下用com+搞定,而且据说链接服务器问题很多,所以建议大家不要用哦。多谢大家参与讨论 sql 组合问题,在线等。。。。 关于 order by sql 取时间 2个表,列出所有并求某列的和 一句简单的sql,返回行数,怎么写?100分,在线等 请问如何清空远程SQL数据库里的数据。 重复引用的数据怎样将所有的都选出来? 快速获得销售订单最后一次修改的金额 高手请赐教:关于DTS的性能问题?(50分) SQL2008R2 连接2012服务器端实例出现‘索引超出了数组界限’,求解决办法 请问怎样在客户端用命令的方式执行DTS包 在SQL SERVER中进行事务处理后SQL SERVER居然不释放占有的资源?怎么回事?
可以使用sql-server企业管理器进行建立,注意其中的rpc及rpc out两项,也可以使用sql语句来完成定义,主要涉及到三个存储过程
sp_addlinkedserver,sp_serveroption和sp_addlinkedsrvlogin,以下是三个存储过程的语法:sp_addlinkedserver
创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft? SQL Server?,则可执行远程存储过程。
语法
sp_addlinkedserver [ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
[ , [ @provider = ] 'provider_name' ]
[ , [ @datasrc = ] 'data_source' ]
[ , [ @location = ] 'location' ]
[ , [ @provstr = ] 'provider_string' ]
[ , [ @catalog = ] 'catalog' ]
例如:sp_addlinkedserver 'ServerName','','SQLOLEDB','dbconn',null,'driver={sql server};server=192.168.1.181;uid=sa,pwd=;'
此处ServerName为自定义名称,dbconn为定义的odbc数据源一般使用的参数如下:
@server “LINKED SERVER”
@srvproduct “Product name”
@provider “Provider”
@datasrc “Data source”
二、设置服务器选项
使用 sp_serveroption 过程,所要使用的参数如下:
@server “Linked server”
@optname “RPC”或“RPC OUT”
@optvalue True 或 False
三、添加Login
使用 sp_addlinkedsrvlogin 过程,所要使用的参数如下:
@rmtsrvname “Linked server”
@useself True 或 False
@locallogin 本地LOGIN
@rmtuser 远程用户
@rmtpassword 远程用户口令全部完整的示例如下:
exec sp_helpserver /*---查看远程服务器的列表-------*/ exec sp_helplinkedsrvlogin /*------查看远程服务器的登录用户---------*/exec sp_droplinkedsrvlogin 'sestlserver',null /*----删除远程服务器的登录用户-----*/
exec sp_dropserver 'sestlserver','droplogins'/*-----删除远程服务器------*/EXEC sp_addlinkedserver 'sestlserver','','SQLOLEDB','sestlserver',null,'driver={sql server};server=192.168.0.2;uid=sa,pwd=tianqibuhao;'
exec sp_serveroption N'sestlserver', N'rpc out', N'true'
exec sp_serveroption N'sestlserver', N'rpc', N'true'
exec sp_addlinkedsrvlogin 'sestlserver','False',null,'sa','tianqibuhao'
/*------建立一个远程的连接服务器---------*//*---在远程服务器上建立一个表----*/
create table tb2
(学号 int,科目 varchar(20),成绩 int)学号 科目 成绩
----------- ---------- -----------
6 政治 50
6 英语 70
7 语文 80
7 数学 90
7 英语 71/*---在本地服务器上建立一个表----*/
create table tb1
(学号 int,科目 varchar(20),成绩 int)学号 科目 成绩
----------- ---------- -----------
1 语文 60
1 数学 70
1 英语 75
1 政治 60
2 语文 55
2 数学 53
2 英语 71
3 语文 80
4 数学 0
5 英语 91/*---在本地服务器上建立一个分布视图----*/
creat view student as
select * from tb1
union all
select * from sestlserver.test.dbo.tb2/*---查询分布视图----*/
select * from student学号 科目 成绩
----------- ---------- -----------
1 语文 60
1 数学 70
1 英语 75
2 语文 55
2 数学 53
2 英语 71
3 语文 80
4 数学 0
5 英语 91
1 政治 60
6 政治 50
6 英语 70
7 语文 80
7 数学 90
7 英语 71
bbs.dvbbs.dbo.proc_UserReg 'uuuuuu','uuuuuu',1,'127.0.0.1'
但放入这个程序里就出错!!!!!!!!!!!!!!!!!!
exec('bbs.dvbbs.dbo.proc_UserReg '''+@UserID+''', '''+@PassWord+''', '''+@Sex+''', ''[127.0.0.1]''')
或者用asp.net中的事务处理,只要能解决就好啊!!!!!!!
而且据说链接服务器问题很多,所以建议大家不要用哦。
多谢大家参与讨论