명시된 바와 같이 here C# 을 사용하여 SQL Server에서 Access로 테이블을 다시 작성합니다. 도움을 받으니 덕분에 프로세스를 완료 할 수 있었지만 .accdb 파일은 꽤 깁니다. 큰, 나중에 압축하고 그들을 수리해야합니다. 그 때문에 the marked answer from here을 사용했습니다. 이상하게도 "Microsoft Office 16.0 Access 데이터베이스 엔진 개체 라이브러리"에 대한 참조 만 내 프로젝트에 추가 할 수있었습니다. DBENGINE의 초기화에서 C# DAO 또는 ADOX를 사용하여 .accdb 파일 압축 및 축소
using Microsoft.Office.Interop.Access.Dao;
var engine = new DBEngine(); // Exception
var destFile = Path.GetFileNameWithoutExtension(filepath) + "_Compact" + ".accdb";
var destFilePath = Path.Combine(Path.GetDirectoryName(filepath), destFile);
engine.CompactDatabase(filepath, destFilePath);
- 객체는, 예외가 발생합니다 : 또한
Retrieving the COM class factory for component with CLSID {CD7791B9-43FD-42C5-AE42-8DD2811F0419} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
는이 작업을 위해 ADOX를 사용하는 방법이, 내가 이미 작성을 위해 그것을 사용하고 있기 때문에 내 카탈로그?
후기 바인딩을 사용하여 데이터베이스 엔진 개체를 생성 해보십시오. 'using System.Reflection; '및'Object engine = Activator.CreateInstance (Type.GetTypeFromProgID ("DAO.DBENGINE.36")); ' –
@ErikvonAsmuth가 답장을 보내 주셔서 감사합니다. 컴파일러에서 해당 메서드에 대한 정의가 없으므로 메서드 "CompactDatabase"를 어떻게 호출합니까? – Scorch
아, 'Dynamic'타입을 사용하면이 문제를 해결할 수 있습니다. (동적 엔진 = Activator.CreateInstance (Type.GetTypeFromProgID ("DAO.DBENGIN E.36 ")); ' –