从C#连接到Redshift群集时,ServerVersion抛出了类型为system.invalidoperation异常的错误。

时间:2019-04-15 08:54:14

标签: c# .net amazon-redshift

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Odbc;
using System.Data;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();


            // Server, e.g. "examplecluster.xyz.us-west-2.redshift.amazonaws.com"
            string server = "examplecluster.xyz.us-west-2.redshift.amazonaws.com";

            // Port, e.g. "5439"
            string port = "5439";

            // MasterUserName, e.g. "masteruser".
            string masterUsername = "*****";

            // MasterUserPassword, e.g. "mypassword".
            string masterUserPassword = "*****";

            // DBName, e.g. "dev"
            string DBName = "dev";

            string query = "select * from suppliers";

            try
            {

                string connString = "Driver={Amazon Redshift (x64)};" +
                   String.Format("Server={0};Database={1};" +
                   "UID={2};PWD={3};Port={4};SSL=true;Sslmode=Require",
                   server, DBName, masterUsername,
                   masterUserPassword, port);
                using (OdbcConnection conn = new OdbcConnection(connString))
                {

                    conn.Open();

                    string sql = query;
                    OdbcDataAdapter da = new OdbcDataAdapter(sql, conn);
                    da.Fill(ds);
                    dt = ds.Tables[0];

                    conn.Close();
                    Console.ReadLine();
                }
            }
            catch (Exception ex) { }
        }
    }
}

正在尝试将此代码连接到我的redshift集群,但是在连接时出现问题,因为服务器中断引发了异常system.invalidoperation enter image description here,通过.net连接到redshift的任何其他方式,我都更喜欢已经在我的项目中为Amazon添加了ODBC

1 个答案:

答案 0 :(得分:0)

之所以能够解决问题,是由于使用了错误的odbc驱动程序版本,并且正在使用64位版本,而IIS是32位的,因此将ODBC版本更改为32,并且可以正常工作