我正在编写一个 table different 实用程序来检查 access 和 sql server 中类似模式表之间的差异。我只想知道实现它的最快方法是什么,因为我在两个数据库中都有大量表。
我正在比较两个表让我们在 access 和 sql 中说 tableX 具有相同的模式和相同的列定义和约束,并且它在表中具有不同的行和元组我想识别差异并提取差异
谢谢史蒂夫
我正在编写一个 table different 实用程序来检查 access 和 sql server 中类似模式表之间的差异。我只想知道实现它的最快方法是什么,因为我在两个数据库中都有大量表。
我正在比较两个表让我们在 access 和 sql 中说 tableX 具有相同的模式和相同的列定义和约束,并且它在表中具有不同的行和元组我想识别差异并提取差异
谢谢史蒂夫
不幸的是,听起来您希望在两个不同的系统之间进行非常细粒度的差异,这并不能提高效率。
如果表格不是太大,最好的办法可能是导出为 CSV(确保对结果进行排序!)并对它们运行 diff 命令。
如果您只需要检查字段名称和类型,ADO 可能适合:http ://www.w3schools.com/ado/met_conn_openschema.asp 。您不会在 Access 字段类型和 SQL Server 字段类型之间获得完全匹配。
为您的 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
另一种选择是依赖tablediff.exe
Sql Server 附带的实用程序。在 msdn 上查看更多信息