AseBulkCopy.WriteToServer错误:","附近的语法不正确

2020-08-16 21:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


是否可以使用AseBulkCopy.WriteToServer填充临时表?

我在测试应用程序中两次调用了以下方法:首先使用非临时表,其次使用临时表。 该代码可以在非临时表上正常运行,但是在尝试填充临时表时出现错误:

','附近的语法不正确。

被提出。

在两种情况下,目标表和源表只有一列,定义为具有相同名称的INT。

我尝试使用DataTable和IDataReader作为数据源,并且都导致出现相同的错误。

我尝试在连接字符串中同时使用" EnableBulkLoad = 1"和" EnableBulkLoad = 2"。

我尝试同时使用原始临时表名称和以" dbo"为前缀的名称。

要加载的数据是单个int值(即1行,1列),尽管如果行较长或多行也将发生。

值得注意的是,我可以将数据插入到临时表中(使用AseCommand.ExecuteNonQuery),并且可以成功地从临时表中执行" SELECT COUNT(1)"(使用AseCommand.ExecuteScalar)。

这是代码:

私有静态无效BulkCopyInsertIntoTable(string tableName)

{

IDataReader dataSource = null;

SqlConnection sourceConnection = null;

MssqlCommand.GetDataReader(SqlServerConnectionString,out sourceConnection,out dataSource);

AseConnection targetConnection =新的AseConnection(SybaseConnectionString);

尝试

{

targetConnection.Open();

AseCommand cmd =新的AseCommand();

AseBulkCopy blk =新的AseBulkCopy(targetConnection);

blk.DestinationTableName = tableName;

//blk.ColumnMappings.Clear();

//blk.ColumnMappings.Add(new AseBulkCopyColumnMapping(0,0));//与数据源没有任何区别,导致数据表引发错误。

Console.WriteLine("将大副本插入表" + tableName +" ..starting:数据源");

//blk.WriteToServer(dataSource);

Console.WriteLine("将大副本插入表" + tableName +" ..starting:datatable");

blk.ColumnMappings.Clear();

DataTable dt = SybaseCommand.GetFakeDataTable(); ;

blk.WriteToServer(dt);

}

捕获(AseException ex)

{

Console.WriteLine(ex.Message);

}

最后

{

targetConnection.Dispose();

Console.WriteLine("将副本插入表" + tableName +" ..ended");

}

}

首先,可以使用WriteToServer填充临时表吗?

假设是这样,我可能做错了什么?

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


是否可以使用AseBulkCopy.WriteToServer填充临时表?

我在测试应用程序中两次调用了以下方法:首先使用非临时表,其次使用临时表。 该代码可以在非临时表上正常运行,但是在尝试填充临时表时出现错误:

','附近的语法不正确。

被提出。

在两种情况下,目标表和源表只有一列,定义为具有相同名称的INT。

我尝试使用DataTable和IDataReader作为数据源,并且都导致出现相同的错误。

我尝试在连接字符串中同时使用" EnableBulkLoad = 1"和" EnableBulkLoad = 2"。

我尝试同时使用原始临时表名称和以" dbo"为前缀的名称。

要加载的数据是单个int值(即1行,1列),尽管如果行较长或多行也将发生。

值得注意的是,我可以将数据插入到临时表中(使用AseCommand.ExecuteNonQuery),并且可以成功地从临时表中执行" SELECT COUNT(1)"(使用AseCommand.ExecuteScalar)。

这是代码:

私有静态无效BulkCopyInsertIntoTable(string tableName)

{

IDataReader dataSource = null;

SqlConnection sourceConnection = null;

MssqlCommand.GetDataReader(SqlServerConnectionString,out sourceConnection,out dataSource);

AseConnection targetConnection =新的AseConnection(SybaseConnectionString);

尝试

{

targetConnection.Open();

AseCommand cmd =新的AseCommand();

AseBulkCopy blk =新的AseBulkCopy(targetConnection);

blk.DestinationTableName = tableName;

//blk.ColumnMappings.Clear();

//blk.ColumnMappings.Add(new AseBulkCopyColumnMapping(0,0));//与数据源没有任何区别,导致数据表引发错误。

Console.WriteLine("将大副本插入表" + tableName +" ..starting:数据源");

//blk.WriteToServer(dataSource);

Console.WriteLine("将大副本插入表" + tableName +" ..starting:datatable");

blk.ColumnMappings.Clear();

DataTable dt = SybaseCommand.GetFakeDataTable(); ;

blk.WriteToServer(dt);

}

捕获(AseException ex)

{

Console.WriteLine(ex.Message);

}

最后

{

targetConnection.Dispose();

Console.WriteLine("将副本插入表" + tableName +" ..ended");

}

}

首先,可以使用WriteToServer填充临时表吗?

假设是这样,我可能做错了什么?

谢谢

付费偷看设置
发送
8条回答
zhangjiyang1323
1楼-- · 2020-08-16 22:17

您需要试用版本。

  1. 您可以直接转到开发人员试用和下载 https://developers.sap.com/trials-downloads.html
  2. 在此处用于过滤Adaptive Server Enterprise的SDK类型
hongfeng1314
2楼-- · 2020-08-16 22:06

以上是针对SDK的,但是我确定您可以找到ASE的30天试用版。

一周热门 更多>