用C#跨服务器跨数据库执行 insert update 操作的问题
如题:用C#跨服务器跨数据库执行 insert update 操作的问题,当然过程中,都包含了事务,但是老是执行错误。我尝试了网页上面的大部分方法,还是不行,但是可以在本地数据库中的查询分析器中执行insert update。
--创建存储过程
create proc testremot
AS
BEGIN
insert into remot104.GameDB.dbo.account(act_name,gm,cha_ids,last_ip,disc_reason,last_leave,password,merge_state)
select act_name,gm,cha_ids,last_ip,disc_reason,last_leave,password,merge_state from dbo.account where act_id = 39
END
GO
备注:remot104 是链接服务器名称,自己在本地数据库中执行insert update delete 都可以,但在如下C#代码中执行就报错,都可以执行读取操作。
C#代码
SqlCommand cmdCreateAct = new SqlCommand("testremot",cn,sqltrans);
cmdCreateAct.CommandType = CommandType.StoredProcedure;
cmdCreateAct.ExecuteNonQuery(); //执行这里 提示如下错误信息
备注:testremot 存储过程名称
cn 数据库连接对象
sqltrans 事务对象
我用了网上的常用方法
-- 链接服务器,不同服务器数据库之间的数据操作
-- 连接远程/局域网数据(openrowset/openquery/opendatasource) 都尝试过了,最后总结出来的是,读取远程数据库中的数据可以,但是不能执行 insert、update、delete 操作。请问是怎么回事。
其中网上说的 双方 MSDTC 、135、SET XACT_ABORT = ON 我都设置了,当我把代码中的事务去掉,就可以执行 insert操作了,为什么,求碰到此问题的人,指点一下,在此感谢。
------解决方案--------------------读取远程数据库中的数据可以,但是不能执行 insert、update、delete 操作。
那就是你这个访问数据库的用户只有查询权限,没有增删改权限了,换个高权限的账户,或者赋予你现在的这个账户增删改权限。
------解决方案--------------------原来是权限的问题。。
------解决方案--------------------没试过,帮你顶一个