我正在编写一个表不同的实用程序,用于检查访问和sql server中类似架构表之间的差异。我想知道什么是实现它的最快方法,因为我在两个数据库中都有大量的表。
我正在比较两个表,让我们说accessX和sql中的tableX具有相同的模式和相同的列定义和约束,并且它在表中有不同的行和元组我想识别这种差异并提取差异
由于 Steave
答案 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