在sql和一个访问中区分两个表的最快方法

时间:2012-06-16 08:53:22

标签: c# sql-server ms-access

我正在编写一个表不同的实用程序,用于检查访问和sql server中类似架构表之间的差异。我想知道什么是实现它的最快方法,因为我在两个数据库中都有大量的表。

我正在比较两个表,让我们说accessX和sql中的tableX具有相同的模式和相同的列定义和约束,并且它在表中有不同的行和元组我想识别这种差异并提取差异

由于 Steave

3 个答案:

答案 0 :(得分:2)

不幸的是,听起来你想在两个完全不同的系统之间进行非常精细的晶粒差分,这不会带来很高的效率。

如果表格不是太大,最好的选择可能是导出为CSV(确保订购结果!)并对它们运行diff命令。

答案 1 :(得分:1)

如果您需要检查的是字段名称和类型,ADO可能适合:http://www.w3schools.com/ado/met_conn_openschema.asp。您将无法在Access字段类型和SQL Server字段类型之间获得完全匹配。

答案 2 :(得分:1)

为ms访问数据库创建一个链接服务器,并使用查询来扩展表:

EXEC sp_addlinkedserver @server = 'DBName'
                      , @provider = 'Microsoft.Jet.OLEDB.4.0'
                      , @srvproduct = 'OLE DB Provider for Jet'
                      , @datasrc = 'C:\myaccessdb.mdb'

使用像这样的查询比较2个表格最简单

SELECT MIN(table_name), column1, column2, ...
FROM (
  SELECT 'sql server table' , column1, column2, ...
  FROM A
  UNION ALL
  SELECT 'msaccess table' , column1, column2, ...
  FROM B) tmp
GROUP BY column1, column2, ...
HAVING COUNT(*) = 1

另一个选择是依赖Sql Server附带的tablediff.exe实用程序。见more info on msdn