Sql Server 2000 导入Sql Server 2000
我有个问题想不通...
我有一条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在运行 这条插入语句的?
还有什么方法可以解决我这个问题呢?
救命啊!!!!!!!!!!!!
[解决办法]
winnt\system32\msdtc.exe
下面是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. 重新启动计算机,让这些更改生效。
[解决办法]
数据量过大,建议不要试图在一条语句当中导入完,而是切分而若干份,如果使用的是手动事务,每一个执行分片都要进行事务启动和提交。否则的话,会因为单个事务过大,占用资源过多,而变得极其缓慢。甚至可能导致失败(如果空间不足的话),不过很可惜的是,在MSSQL当中不支持关闭事务日志,所以必须考虑目标数据库的可用磁盘空间,以及事务日志的上限。
[解决办法]
写成存储过程,放在服务器上导吧.
[解决办法]