SQL Server 2005 Express 無 Management Studio 完整版,匯入 Access (.mdb/.accdb) 可用 OPENROWSET 分散式查詢或 Access 內建「升遷精靈」。
-- SSMS 或 sqlcmd 執行 EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE;
SELECT * INTO dbo.TargetTable FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0', -- Access 2003 (.mdb) 'Data Source="D:\Data\Source.mdb";User Id=admin;Password=;', 'SELECT * FROM SourceTable'); -- Access 2007+ (.accdb) 改用 ACE Provider SELECT * INTO dbo.TargetTable FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0', 'Data Source="D:\Data\Source.accdb";User Id=admin;Password=;', 'SELECT * FROM SourceTable');
localhost\SQLEXPRESS)、驗證方式、目標資料庫名。優點:一次遷移全庫結構與資料,保留關聯與索引。缺點:需安裝 Access 客戶端,大表遷移較慢。
| 錯誤 | 原因 | 解決 |
|---|---|---|
| 「找不到提供者 Microsoft.Jet.OLEDB.4.0」 | 64 位 SQL Server 無 32 位 Jet Provider | 安裝 64 位 Microsoft Access Database Engine 2010/2016 Redistributable (ACE.OLEDB.12.0) |
| 「無法啟動分散式交易」 | MSDTC 服務未啟動 | services.msc 啟動 Distributed Transaction Coordinator,設定網路存取權限 |
| 自動編號欄位遷移後非 Identity | Jet/ACE Identity 不對應 SQL Server Identity | 遷移後手動 ALTER TABLE ... ALTER COLUMN id INT IDENTITY(1,1) |