我有个问题想不通...
我有一条SQL语句
insert into [currency](currency_code,currency_name,currency_rate,systemDefault,modified_date) select currency_code,currency_name,currency_rate,systemDefault,modified_date from OPENDATASOURCE('SQLOLEDB','Data Source=192.168.1.100;User ID=sa;Password=abc').Gourmet.dbo.[currency]在查询分析器中运行完全没有问题的
但我回到Delphi中用ADOConnection.execute运行就出现问题了...提示是MSDTC没有开之类的
现在我已经把SQL SERVER 2000 都打了SP3的补丁和MSDTC都开了...防火墙都设好了但在delphi中运行就提示新的错误提示
"New transaction cannot enlist in the specified transaction coordinator"为什么会这样的错误,一般你们是用什么控件在delphi在运行 这条插入语句的?
还有什么方法可以解决我这个问题呢?救命啊!!!!!!!!!!!!
我有一条SQL语句
insert into [currency](currency_code,currency_name,currency_rate,systemDefault,modified_date) select currency_code,currency_name,currency_rate,systemDefault,modified_date from OPENDATASOURCE('SQLOLEDB','Data Source=192.168.1.100;User ID=sa;Password=abc').Gourmet.dbo.[currency]在查询分析器中运行完全没有问题的
但我回到Delphi中用ADOConnection.execute运行就出现问题了...提示是MSDTC没有开之类的
现在我已经把SQL SERVER 2000 都打了SP3的补丁和MSDTC都开了...防火墙都设好了但在delphi中运行就提示新的错误提示
"New transaction cannot enlist in the specified transaction coordinator"为什么会这样的错误,一般你们是用什么控件在delphi在运行 这条插入语句的?
还有什么方法可以解决我这个问题呢?救命啊!!!!!!!!!!!!
解决方案 »
- delphi 获取浏览器URL地址时出现异常
- 求解delphi乱码问题
- 外交部发言人孔泉答日本记者问(精彩)
- 如何在程序中处理shellexecute传递的参数?
- 新学Delphi,请教一个小问题:在一个Edit框中输入了值,并回车,请问events中那一个是回车的事件?
- 向各位资深网友请教:我的软件要升级,用Delphi8还是用C#?
- 高分请教用Delphi来做xp式窗体,xp式菜单,xp式按钮
- nmftp下载文件,怎样可以知道他的下载进度?结合progressbar怎样做?
- xml数据文件倒入数据库,有什么好方法。
- 触发器导致的adoquery的execsql函数返回值错误的问题
- 向Firebird数据库插入数据时出错
- 想自学delphi的网络方面的知识,请问书籍那本好呢?
反正远程调用是很麻烦
不如你把他做成个存储过程用DELPHI调用
下面是MS里提供的:
此问题发生的原因在于,没有对 Microsoft 分布式事务处理协调器 (MS DTC) 进行网络访问配置。默认情况下,在运行 Windows Server 2003 的计算机上,新安装的 SQL Server 2000 中的 MS DTC 网络访问设置是禁用的。解决方案
要解决此问题,请按照下列步骤操作: 1. 单击“开始”,指向“所有程序”,指向“管理工具”,然后单击“组件服务”。
2. 在组件服务向导中,展开“组件服务”,然后双击“计算机”。
3. 右键单击“我的电脑”,然后单击“属性”。
4. 单击“MSDTC”选项卡,然后单击“安全性配置”。
5. 在“安全配置”对话框中,单击以选中“网络 DTC 访问”复选框。
6. 在“网络 DTC 访问”下,单击“网络事务”。
7. 确保“DTC 登录帐户”设置为“NT Authority\NetworkService”。
8. 单击“确定”。
9. 在消息框中,单击“是”。
10. 在“DTC 控制台消息”对话框中,单击“确定”。
11. 在“系统属性”对话框中,单击“确定”。
12. 重新启动计算机,让这些更改生效。
这一句我看不懂
因为在“网络DTC访问”下没有网络事务
有很多复选框 不知道哪个要点上要求验证那个需要吗?我刚刚试过好像还有问题不知道是设置不好还是问题仍然存在
刚刚我已经重新设了“网络 DTC ”
好像是可以了但是运行那条语句时等好久
最后就说"Time Expire"之类的是什么问题漏了?
不行就换一个方法,在程序中先用SQL取得一个数据库的数据,通过循环插入另一个数据库.
运行时 等很久最后出现"Timeout Expired"这样的问题呢?
救命啊!
2、可以先找个记录少的表试下,比如10条记录的表
不安装行吗?
查了查CSDN的老帖子 找到点东西
http://topic.csdn.net/t/20040423/21/3001796.html
引邹老大原话:
----------------------
--不在同一台电脑上,那可以用下面两种方法:
--如果经常访问或数据量大,建议用链接服务器
--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go
--查询示例
select * from srv_lnk.数据库名.dbo.表名
--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名
go
--处理完成后删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)
--导入示例
select * into 表 from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名) 我在查询分析器内测试建立炼接服务器的第一种方法比第二重要快很多
530万数据 第一种7分55秒 第二种12分多
还是建立楼主封成存储过程 怎么说也好维护些
不行就换一个方法,在程序中先用SQL取得一个数据库的数据,通过循
这样就行完成
这个在查询分析器中执行就行了