我有一个代码使用ASE客户端实现从MSSQL SERVER到SYBASE(12.5)的批量复制,但是在WriteToServer()函数中,我总是得到错误“'语法不正确','”。注意:我甚至将DestinationTableName更改为不存在的表,但我仍然得到相同的错误。 我的代码
using (AseConnection theCons = new AseConnection(connstring))
{
try
{
if (theCons.State != ConnectionState.Open)
{
theCons.Open();
}
AseBulkCopy objbulk = new AseBulkCopy(theCons);
objbulk.DestinationTableName = "dbo.testBulk";
try
{
objbulk.WriteToServer(dt); //dt is my source DataTable from MSSQL SERVER
}
catch (Exception exception)
{
}
}
catch (Exception exception)
{
}
finally
{
if (theCons != null)
{
if (theCons.State != ConnectionState.Closed)
theCons.Close();
}
}
}
答案 0 :(得分:0)
当提供程序找不到目标表并使用空表名称查询元数据以进行批量复制时(是的,检查操作结果不适用于真正的开发人员...),将生成此错误。
在您的情况下,问题出在“ dbo.testBulk”行。例如。您的表名为TestBulk
(标题为小写)还是不在dbo模式中。
提示如何调试它。 ASE客户端使用以下代码获取表架构:
cn.GetSchema("columns", new object[] {tableName, ownerName, databaseName });
因此,您需要在此处放置dbo
和testBulk
组件,看看它是否会返回列元数据。