使用连接字符串
"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 constr, DataSourceWrapper& datasrcWrapper) 在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, 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()
有没有人有任何想法?我已经从 inf 文件中重新安装了 MDAC,但是我已经阅读了一些关于 .Net 代码的文章,其中提到了 MDAC 2.8 的 SP2。
非常欢迎任何和所有输入。