Использование строки соединения изOleDbConnection.Open() бросает «сообщение об ошибке доступных» сообщение об ошибке, прежде чем даже связаться с SQL Server
"Provider=SQLOLEDB;Data Source=localhost;User ID=foo;password=bar;Database=CodeLists;Pooling=true;Min Pool Size=20;Max Pool Size=30;"
я получаю трассировку стека
System.Data .OleDb.OleDbException: Нет сообщение об ошибке доступно, код результата: -2147024770 (0x8007007E). на System.Data.OleDb.OleDbServicesWrapper.GetDataSource (OleDbConnectionString Возведения, DataSourceWrapper & datasrcWrapper) в System.Data.OleDb.OleDbConnectionInternal..ctor (OleDbConnectionString конструк, подключение OleDbConnection)
на System.Data.OleDb. OleDbConnectionFactory.CreateConnection (DbConnectionOptions опции, объект poolGroupProviderInfo, DbConnectionPool бассейн, DbConnection owningObject) в System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection (DbConnection owningConnection, DbConnectionPoolGroup poolGroup) на System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection owningConnection) при System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection outerConnection, DbConnectionFactory ConnectionFactory) при System.Data.OleDb.OleDbConnection.Open()
Я получаю эту ошибку, даже если я изменяю URL-адрес сервера с localhost на hkfjhuidhf, что является недопустимым, поэтому я предполагаю, что это проблема на сервере в отношении соединения/установки OleDb и/или MDAC.
Сервер - это Windows Server 2003 с последним пакетом обновления, а MDAC - 2,8 SP2.
код я использую:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void run_Click(object sender, EventArgs e)
{
output.Text = string.Empty;
try
{
OleDbConnection connection;
try
{
connection = new OleDbConnection(conString.Text);
}
catch (Exception ex)
{
MessageBox.Show("Error creating connection");
put(ex.ToString());
return;
}
OleDbCommand command;
try
{
command = connection.CreateCommand();
}
catch (Exception ex)
{
MessageBox.Show("Error creating command");
put(ex.ToString());
return;
}
command.CommandType = CommandType.Text;
command.CommandText = "select top 10 * from " + table.Text;
if (connection.State != ConnectionState.Open)
connection.Open();
OleDbDataReader reader;
try
{
reader = command.ExecuteReader();
if (reader.HasRows)
{
string @out = string.Empty;
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
@out += reader[i] + ", ";
}
}
put(@out);
}
reader.Close();
}
catch (Exception ex)
{
put(ex.ToString());
}
finally
{
connection.Close();
}
}
catch (Exception ex)
{
put(ex.ToString());
}
}
private void put(string message)
{
output.Text += message+Environment.NewLine;
}
}
И это падает на connection.Open()
Кто-нибудь есть какие-нибудь идеи? Я переустановил MDAC из файла inf, однако я прочитал несколько статей, на которых был указан SP2 MDAC 2.8 в отношении кода .Net.
Любой вход очень приветствуется.
Вы используете SQL Server Express? – James