【问题标题】:Insert into SQL from MDB file从 MDB 文件插入 SQL
【发布时间】:2020-02-29 14:51:31
【问题描述】:
string sqlConnectionString = String.Format(@"Data Source={0};Initial Catalog={1};Integrated Security=True;MultipleActiveResultSets=True", server, database);
string mdbConnectionString = String.Format(@"Provider=Microsoft.JET.OLEDB.4.0;data source={0};", @"C:\test\test.mdb");

using (var mdbConnection = new OleDbConnection(mdbConnectionString))
using (var sqlConnection = new SqlConnection(sqlConnectionString))
{
    mdbConnection.Open();
    sqlConnection.Open();

    // Empty table
    var sqlQuery = String.Format("DELETE FROM Languages");
    var sqlCommand = new SqlCommand(sqlQuery, sqlConnection);
    sqlCommand.ExecuteNonQuery();

    // Fill table with new information
    sqlQuery = String.Format("INSERT INTO Languages (ID, lang) " +
                             "SELECT ID, lang " +
                             "FROM OPENROWSET('" + mdbConnection.Provider + "', '" + mdbConnection.DataSource + "'; 'admin'; '', Languages)");
     sqlCommand = new SqlCommand(sqlQuery, sqlConnection);
     sqlCommand.ExecuteNonQuery();
}

第二个sqlCommand在调用ExecuteNonQuery时抛出这个错误:

System.Data.SqlClient.SqlException:“无法为链接服务器“(null)”创建 OLE DB 提供程序“Microsoft.JET.OLEDB.4.0”的实例。”。

我错过了什么?

【问题讨论】:

  • 变量“服务器”是否设置为有效的 SQL Server?看起来异常是由于与服务器的连接失败。 Sql Client 连接不应使用 JET。未发布的代码有问题。使用批量复制。请参阅:docs.microsoft.com/en-us/dotnet/api/…
  • openrowset 是从 SQL Server 的角度执行的。即:除非 Access 文件位于 SQL Server 上的 C:\test\test.mdb 并且运行 SQL Server 的 Windows 帐户具有适当的文件系统访问权限,否则它将无法工作。
  • @AlwaysLearning Access 文件将位于运行 SQL Server 的同一台机器上。
  • @jdweng 与 BulkCopy 配合得很好

标签: c# sql sql-server ms-access oledb


【解决方案1】:

您需要在显示的现有代码之前添加代码,以设置 sql 服务器的服务器和数据库名称。请检查您是否拥有它 - 并且服务器名称和数据库名称是否正确。
服务器名称通常可以是文本或 IP 地址(但在字符串周围保留引号,例如:“10.1.99.21”

Dim server as String
Dim database as String
server = "mySqlServerName"
database = "myDatabaseName"

【讨论】:

  • 既然您选择否决我的解决方案,请发布您用于初始化变量“server”的代码,以便我们查看实际问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多