'Link Table Manager' 功能以编程方式使用 c#
'Link Table Manager' functionality Programatically using c#
我想编写一些自定义代码以编程方式执行 'Link Table Manager' 操作。我有 MS-Access 数据库,该数据库当前引用来自 Excel、MS-Access 和 SQL 服务器的外部数据。
在我的 MS-Access 数据库上执行宏之前,我想重新link 外部数据源或提供数据源的新位置以防数据位置发生变化来源。
我在 MS-Access 数据库中有一个 table,它链接到外部 SQL 数据源(测试数据库)。现在我希望将其 linked 到生产数据库。我尝试了以下代码,但它抛出了一个 COM 异常,错误描述为“ODBC--与 'EmployeeConnectionForSQL' 的连接失败。”
public void performLinkTableMangerOperationForSQL()
{
string CurrentDatabasePath = @"D:\UDTDatabase\InternalDatabase.accdb";
Microsoft.Office.Interop.Access.Dao.DBEngine DAO = new Microsoft.Office.Interop.Access.Dao.DBEngine();
Microsoft.Office.Interop.Access.Dao.Database db;
Microsoft.Office.Interop.Access.Dao.TableDefs dt;
db = DAO.OpenDatabase(CurrentDatabasePath);
dt = db.TableDefs;
// Refreshing link for Sql server external table with DSN.
string sqlSource = @"DATABASE=Employee;";
string DSNName = "EmployeeConnectionForSQL;";
string sqlNewConnectionString = @"ODBC;FileDSN=" + DSNName + sqlSource;
foreach (Microsoft.Office.Interop.Access.Dao.TableDef table in dt)
{
string name = table.Name;
if (table.Name == "dbo_Employees")
{
table.Connect = sqlNewConnectionString;
table.RefreshLink();
}
}
db.Close();
}
那个FileDSN
显然是无效的。 FileDSN
应指向 .dsn 文件。如果您想使用普通 DSN,请使用 DSN=
,而不是 FileDSN=
。由于 DSN 无效,您无法重新链接。
我强烈建议您使用无 DSN,只使用连接字符串,但提供有效的 FileDSN 也应该有效。
我想编写一些自定义代码以编程方式执行 'Link Table Manager' 操作。我有 MS-Access 数据库,该数据库当前引用来自 Excel、MS-Access 和 SQL 服务器的外部数据。
在我的 MS-Access 数据库上执行宏之前,我想重新link 外部数据源或提供数据源的新位置以防数据位置发生变化来源。
我在 MS-Access 数据库中有一个 table,它链接到外部 SQL 数据源(测试数据库)。现在我希望将其 linked 到生产数据库。我尝试了以下代码,但它抛出了一个 COM 异常,错误描述为“ODBC--与 'EmployeeConnectionForSQL' 的连接失败。”
public void performLinkTableMangerOperationForSQL()
{
string CurrentDatabasePath = @"D:\UDTDatabase\InternalDatabase.accdb";
Microsoft.Office.Interop.Access.Dao.DBEngine DAO = new Microsoft.Office.Interop.Access.Dao.DBEngine();
Microsoft.Office.Interop.Access.Dao.Database db;
Microsoft.Office.Interop.Access.Dao.TableDefs dt;
db = DAO.OpenDatabase(CurrentDatabasePath);
dt = db.TableDefs;
// Refreshing link for Sql server external table with DSN.
string sqlSource = @"DATABASE=Employee;";
string DSNName = "EmployeeConnectionForSQL;";
string sqlNewConnectionString = @"ODBC;FileDSN=" + DSNName + sqlSource;
foreach (Microsoft.Office.Interop.Access.Dao.TableDef table in dt)
{
string name = table.Name;
if (table.Name == "dbo_Employees")
{
table.Connect = sqlNewConnectionString;
table.RefreshLink();
}
}
db.Close();
}
那个FileDSN
显然是无效的。 FileDSN
应指向 .dsn 文件。如果您想使用普通 DSN,请使用 DSN=
,而不是 FileDSN=
。由于 DSN 无效,您无法重新链接。
我强烈建议您使用无 DSN,只使用连接字符串,但提供有效的 FileDSN 也应该有效。