の接続文字列を使用する
"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 プール グループ) で 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() でフォールオーバーします
誰にもアイデアはありますか?inf ファイルから MDAC を再インストールしましたが、.Net コードに関して MDAC 2.8 の SP2 に関する記事をいくつか読みました。
すべての入力は大歓迎です。