【问题标题】:ODBC Connection Issues: Function Sequence error when executing anythingODBC 连接问题:执行任何操作时出现函数序列错误
【发布时间】:2013-04-09 05:03:20
【问题描述】:

我的任务是一次性从 4D 数据库迁移到我们的 MSSQL 结构。我在 ODBC 管理员中设置了一个数据源,并且能够毫无问题地连接到它。

我在 Visio 中对架构进行了“逆向工程”,因此我可以很好地了解表之间的关系,并计划如何重新构建 4D 数据以适应我们的架构。我创建了一个简单的控制台应用程序,因为这将是一次运行,并且我能够建立与数据源的连接,但是一旦我执行任何操作,连接就会断开或被禁用。

  System.Data.Odbc.OdbcConnection conn = 
               new System.Data.Odbc.OdbcConnection("Dsn=4D v12 datasource");
        try
        {
            conn.Open();
            Console.WriteLine("Status of Connection:" + conn.State.ToString());
            //Here it says the connection to the DB is open and ready for action
            Console.ReadLine(); 
            //pause to visually confirm  the connection is open
            OdbcCommand com = new OdbcCommand("SELECT * FROM ATable", conn);
            com.CommandType = CommandType.Text;
            Console.Write(com.ExecuteNonQuery());
            //Right here it blows up and closes the connection                
         }

我也尝试过对数据集和数据适配器做一些事情,但无济于事。

System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection("Dsn=4D v12 datasource");
        try
        {
            conn.Open();
            Console.WriteLine("Status of Connection:" + conn.State.ToString());                
            Console.ReadLine();
            OdbcCommand com = new OdbcCommand("SELECT * FROM ATable", conn);
            com.CommandType = CommandType.Text;
            //Also tried using data sets and data adapters
            DataSet dsTest = new DataSet();
            OdbcDataAdapter dataAdapter = new OdbcDataAdapter(com);
            //but right at this line the connection suddenly disconnects
            dataAdapter.Fill(dsTest);

        }
        catch (Exception e)
        {
            Console.WriteLine("Failure:" + e.Message.ToString());
            // the exception message reads simply connection has been disabled. 
            Console.WriteLine("Status of Connection: " + conn.State.ToString());
            Console.ReadLine();
        }
        finally 
        {
            Console.Write("Closing connection.");
            conn.Close();
            Console.Write(".");
            conn.Dispose();
            Console.WriteLine(".");
            Console.WriteLine("Connection Closed and Disposed");
            Console.ReadLine();
        }

我试图寻找遇到同样困难的人,但我发现的文档很少,并且在这方面没有太大帮助。有大量关于在 4D 产品上执行查询的信息,但不是来自数字鸿沟。请有经验的朋友指教。感谢您的宝贵时间以及您可能提供的任何帮助,热心的读者。

【问题讨论】:

  • 我改变了一些东西并查看了内部异常,看起来数据库连接在故障点只是简单关闭,但我检查连接状态一秒钟,不一毫秒,早点就好了。非常感谢任何关于我遗漏或做错的建议。谢谢!
  • 一个新的发展。我在连接上使用了 GetSchema() 方法,只要我不使用任何参数,它就会返回我期望的值,但是只要我执行 conn.GetSchema("Tables") 或 ("TABLES") 或视图或任何它禁用连接并拔下插头。这是权限问题吗?请指教,善良的社区。​​span>
  • 更正,如果我传递一个与 GetSchema 中可能存在的参数(如视图或表)匹配的参数,它会抛出一个异常(禁用连接)但是如果我抛出一个奇怪的参数,它会告诉我集合是不明确的。不确定这是否会有所不同。
  • 我得到的实际 ODBC 错误代码是 HY010: Function sequence error: No Database Connection。

标签: c# sql odbc data-migration 4d-database


【解决方案1】:

显然问题的根本原因在于驱动程序。将我从网站上获得的驱动程序替换为所有者发送的驱动程序后,连接停止被禁用,一切都按预期工作。

【讨论】:

  • 如果我使用那个可怕的后端,我会找到 Richard Petty 的 Ghost。他是最好的司机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
相关资源
最近更新 更多