如果您的部門或工作小組使用 Microsoft SQL Server 來儲存資料,您可能必須在 Access 中使用一些 SQL Server 資料。
您可以使用兩種方式將 SQL Server 物件 (資料表或檢視) 中的資料帶入 Access 中:匯入或連結。這兩種程序的差別在於:
- 當您匯入資料時,Access 會建立 SQL Server 資料的複本,因此在 Access 資料庫中對資料所做的任何後續變更,都不會反映到 SQL Server 資料庫。同樣的,在 SQL Server 資料表或檢視中所做的任何變更,也不會反映到 Access。
- 當您連結 SQL Server 資料時,您會直接連線至來源資料,因此在 Access 中對資料所做的任何後續變更,都不會反映到 SQL Server,反之亦然。
本文說明如何匯入或連結 SQL Server 資料。
您想要做什麼?
決定要匯入或連結
適用於匯入的情況
一般而言,您會因以下原因將 SQL Server 資料匯入至 Access 資料庫:
- 由於您不再需要將 SQL Server 資料保留在 SQL Server 資料庫中,因此想將資料永久移至 Access 資料庫。將資料匯入 Access 之後,即可從 SQL Server 資料庫刪除資料。
- 您的部門或工作小組使用 Access,不過您偶爾需要從 SQL Server 資料庫中取得其他資料,並合併至您的 Access 資料庫中。
由於匯入 SQL Server 資料會在 Access 資料庫中建立該資料的複本,因此在匯入程序期間,您必須指定要複製的資料表或檢視。
適用於連結的情況
一般而言,您會因以下原因連結 SQL Server 資料:
- 若要直接連線至來源資料,以檢視並編輯 SQL Server 資料庫與 Access 資料庫中的最新資訊。
- SQL Server 資料庫包含許多大型資料表,因此您無法將所有資料表匯入至單一的 .accdb 檔案。Access 資料庫的大小上限為 2 GB (不包含系統物件所需的空間)。
- 若要根據 SQL Server 的資料執行查詢並產生報表,但不想複製資料,則請考慮連結至 SQL Server。
- 您的部門或工作小時組使用 Access 產生報表及查詢,並使用 SQL Server 存放資料。個別的小組可以建立 SQL Server 資料表或檢視以進行集中化的儲存,不過這些資料通常需要在桌面程式中才能進行彙總和產生報表。連結的方式是一個比較合適的選擇,因為這麼做可以讓 SQL Server 和 Access 資料庫的使用者新增和更新資料,並檢視和使用最新的資料。
- 您是剛開始學習使用 SQL Server 的 Access 使用者。您將數個資料庫移轉到 SQL Server,且這些資料庫中的大多數資料表都是連結資料表。從現在開始,您可以在 SQL Server 中建立資料表和檢視,然後從您的 Access 資料庫進行連結,而不需要建立 Access 資料表。
- 您想要將資料存放在 SQL Server 中,但是也想要在 Access 中使用最新資料,以執行查詢並列印您在 Access 中設計的報表。
從 SQL Server 匯入資料
準備匯入
在匯入作業期間,Access 會建立資料表,然後從 SQL Server 資料庫將資料複製至該資料表中。在匯入作業的最後,您可以選擇將匯入作業的詳細資料儲存為規格。
附註 匯入規格可以幫助您將來進行重複匯入的作業,而不需要每次都使用 [匯入精靈] 的步驟。
- 找到包含您要匯入之資料的 SQL Server 資料庫。連絡資料庫的管理員以取得連線資訊。
- 確認您要匯入的資料表或檢視。您可以在單一匯入作業中匯入多個物件。
- 檢閱來源資料並考量下列事項:
- Access 不支援在資料表中容納超過 255 個欄位,因此 Access 只會匯入前 255 欄。
- Access 資料庫的大小上限為 2 GB (不包含系統物件所需的空間)。如果 SQL Server 資料庫包含許多大型資料表,您可能無法將所有資料表匯入至單一的 .accdb 檔案。在這種情況下,您可能需要考慮將資料連結到您的 Access 資料庫。
- 在匯入作業的最後,Access 不會在相關資料表之間自動建立關聯性。您必須使用 [關聯性] 視窗中的選項,以手動的方式在新增及現有的資料表之間建立關聯性。若要顯示 [關聯性] 視窗:
- 按一下 [檔案] 索引標籤,然後按一下 [資訊] 索引標籤上的 [關聯性]。
- 確認要匯入 SQL Server 資料的 Access 資料庫。
請確定您擁有將資料新增至 Access 資料庫的必要權限。如果您不想將資料儲存至任何現有的資料庫,請建立一個空白資料庫,只要按一下 [檔案] 索引標籤,然後按一下 [開新檔案] 索引標籤上的 [空白資料庫] 即可。
- 檢閱 Access 資料庫中的資料表 (如果有的話)。
匯入作業會建立與 SQL Server 物件具有相同名稱的資料表。如果已經使用過該名稱,Access 便會在新資料表的名稱中加上 1,例如,Contacts1 (如果 Contacts1 也已經被使用,Access 便會建立 Contacts2,依此類推)。
附註 Access 不會在進行匯入作業時覆寫資料庫中的資料表,而且您也無法將 SQL Server 資料附加到現有的資料表中。
匯入資料
- 開啟目的資料庫。
在 [外部資料] 索引標籤上的 [匯入及連結] 群組中,按一下 [ODBC 資料庫]。
- 按一下 [匯入來源資料至目前資料庫的新資料表],然後按一下 [確定]。
- 在 [選取資料來源] 對話方塊中,如果您要使用的 .dsn 檔案已經存在,請按一下清單中的檔案。
- 按一下 [確定] 以關閉 [選取資料來源] 對話方塊。
Access 便會顯示 [匯入物件] 對話方塊。
- 在 [資料表] 底下,按一下您要匯入的每個資料表或檢視,然後按一下[確定]。
- 如果出現 [選取唯一的記錄識別碼] 對話方塊,表示 Access 無法判斷哪個欄位或哪些欄位可以唯一地識別特定物件的每一列。在這種情況下,請選取每一列的唯一欄位或欄位組合,然後按一下 [確定]。如果您不確定如何選取,請洽詢 SQL Server 資料庫管理員。
Access 會將資料匯入。若想要在稍後重複進行匯入作業,可以將匯入步驟儲存為匯入規格,方便將來輕鬆地重複執行相同的匯入步驟。您需要在電腦上安裝 Microsoft Office Outlook 才可建立工作。
- 在 [取得外部資料 - ODBC 資料庫] 對話方塊中,按一下 [儲存匯入步驟]底下的 [關閉]。Access 便會完成匯入作業,並在功能窗格中顯示一個或多個新的資料表。
若想要將匯入儲存為工作以供重複使用,請繼續下一節。
儲存並使用匯入設定
附註 您必須安裝 Microsoft Office Outlook 才可建立工作。
- 在 [取得外部資料 - ODBC 資料庫] 對話方塊的 [儲存匯入步驟] 底下,選取 [儲存匯入步驟] 核取方塊。一組額外的控制項隨即出現。
- 在 [另存新檔] 方塊中輸入匯入規格的名稱。
- 在 [描述] 方塊中輸入描述。這個步驟是選擇性的。
- 若要定期 (例如每週或每月) 執行操作,請選取 [建立 Outlook 工作] 核取方塊。這樣便會在 Microsoft Outlook 2010 中建立一項工作,讓您執行規格。
- 按一下 [儲存匯入]。
如果沒有安裝 Outlook,當您按一下 [儲存匯入] 時,Access 便會顯示錯誤訊息。
附註 如果沒有正確設定 Outlook 2010,[Microsoft Outlook 2010 啟動精靈] 就會啟動。請遵循精靈的指示設定 Outlook。
您可以選擇建立 Outlook 工作。若要定期或依週期性間隔執行匯入作業,則在 Outlook 中建立工作會很有用。不過即使未建立工作,Access 還是會儲存規格。
建立 OUTLOOK 工作
如果您選取 [建立 Outlook 工作] 核取方塊,Access 便會啟動 Office Outlook 2010,並顯示一項新工作。請遵循下列步驟設定工作:
附註 如果沒有安裝 Outlook,Access 便會顯示錯誤訊息。如果沒有正確設定 Outlook,[Outlook 設定精靈] 就會啟動。請遵循精靈的指示設定 Outlook。
- 檢閱並修改工作設定,例如 [開始日期]、[到期日] 和 [提醒]。
如果要使匯入工作成為週期性事件,請按一下 [週期性] 並填入適當的資訊。
- 按一下 [儲存後關閉]。
執行儲存的工作
- 在 Outlook 功能窗格中,按一下 [工作],然後按兩下您所要執行的工作。
- 在 [工作] 索引標籤上的 [Microsoft Access] 群組中,按一下 [執行匯入]。
- 切換回到 Access 視窗,然後按下 F5 鍵重新整理功能窗格。
- 按兩下匯入的資料表,在資料工作表檢視中開啟它。
- 確定所有的欄位和記錄都已匯入,而且沒有任何錯誤。
- 用滑鼠右鍵按一下功能窗格中的匯入資料表,然後按一下快顯功能表中的 [設計檢視]。檢閱欄位資料型別和其他欄位屬性。
連結 SQL Server 資料
由於資料儲存在資料表中,因此當您連結至 SQL Server 資料庫中的資料表或檢視時,Access 會建立一個新的資料表 (通常稱為連結資料表),以反映來源物件的結構和內容。您可以在 SQL Server 中變更資料,也可以在 Access 的 [資料工作表] 檢視或 [表單] 檢視中變更資料。您在一個位置對資料所做的變更會反映到其他位置。不過,若要進行結構變更 (例如移除或變更資料行),則必須從 SQL Server 資料庫或從連線至該資料庫的 Access 專案執行這項操作。您無法在使用 Access 時,新增、刪除或變更連結資料表中的欄位。
準備連結
- 找到您要連結資料的 SQL Server 資料庫。連絡資料庫管理員以取得連線資訊。
- 確任您所要連結的資料表和檢視。您可以在單一連結作業中連結到多個物件。
- 檢閱來源資料並考量下列事項:
- Access 不支援在資料表中容納超過 255 個欄位,因此連結資料表只會包含您所連結之物件的前 255 個欄位。
- 在 SQL Server 物件中唯讀的資料行,在 Access 中也會是唯讀的。
- 您將無法新增、刪除或修改 Access 中連結資料表的資料行。
- 確認您要建立連結資料表的 Access 資料庫。請確定您擁有將資料新增到資料庫的必要權限。如果您不想將資料儲存至任何現有的資料庫,請建立一個新的空白資料庫,只要按一下 [檔案] 索引標籤,然後按一下[開新檔案] 索引標籤上的 [空白資料庫] 即可。
- 檢閱 Access 資料庫中的資料表,當您連結至 SQL Server 資料表或檢視時,Access 會建立與來源物件具有相同名稱的連結資料表。如果已經使用過該名稱,Access 便會在新資料表的名稱中加上 1,例如,Contacts1 (如果 Contacts1 也已經被使用,Access 便會建立 Contacts2,依此類推)。
- 若要連結至資料,請開啟目的資料庫。
- 在 [外部資料] 索引標籤上的 [匯入及連結] 群組中,按一下 [ODBC 資料庫]。
- 按一下 [以建立連結資料表的方式,連結至資料來源],然後按一下 [確定]。
- 在 [選取資料來源] 對話方塊中,按一下您要使用的 .dsn 檔案,或是按一下 [新增] 以建立新的資料來源名稱 (DSN)。
- 在 [選取資料來源] 對話方塊中,如果您要使用的 .dsn 檔案已經存在,請按一下清單中的檔案。
- 按一下 [確定]。
Access 便會顯示 [連結資料表] 對話方塊。
- 在 [資料表] 底下,按一下您要連結的每個資料表或檢視,然後按一下[確定]。
- 如果出現 [選取唯一的記錄識別碼] 對話方塊,表示 Access 無法判斷哪個欄位或哪些欄位可以唯一地識別特定物件的每一列。在這種情況下,請選取每一列的唯一欄位或欄位組合,然後按一下 [確定]。如果您不確定如何選取,請洽詢 SQL Server 資料庫管理員。
Access 便會完成連結作業,並在功能窗格中顯示一個或多個新的連結資料表。
重要事項 每當您開啟連結資料表或來源物件時,都可以在其中看到最新的資料。不過,對 SQL Server 物件進行的結構變更則不會自動反映到連結資料表中。
套用最新版 SQL SERVER 物件結構,更新連結的資料表:
- 用滑鼠右鍵按一下功能窗格中的資料表,然後按一下快顯功能表中的[連結資料表管理員]。
- 選取您要更新之每個連結資料表旁邊的核取方塊,或按一下 [全選] 以選取全部的連結資料表。
- 按一下 [確定]。
如果更新成功,Access 便會顯示一則表示成功的訊息;如果不成功,Access 便會顯示一則錯誤訊息。
- 按一下 [關閉] 以關閉 [連結資料表管理員]。
Access 如何解譯 SQL Server 資料型別
由於 Access 資料型別與 SQL Server 資料型別不同,Access 必須判斷在您要匯入或連結的每個 SQL Server 資料表或檢視中,最適合使用的 Access 資料型別。例如,資料型別 bit 的 SQL Server 欄會以資料型別 Yes/No 匯入或連結至 Access 中。另一個範例是,資料型別 nvarchar(255) (或是較小值) 的 SQL Server 欄會以資料型別 Text 匯入或連結,但資料型別 nvarchar(256) (或是更大值) 的欄,則是會匯入為 Access Memo 欄位。在完成匯入或連結作業後,您可以在 [設計檢視] 中開啟資料表,並確認 Access 指派至其欄位的資料型別。您可以變更匯入資料表中的欄位資料型別。不過,除了在 SQL Server 資料庫本身或連線至該資料庫的 Access 專案中進行變更之外,您無法變更連結資料表中的欄位資料型別。
下表列出主要的 SQL Server 資料型別。第二和第三欄顯示 Access 如何解譯每種型別。
SQL SERVER 資料型別 | ACCESS 資料型別 | ACCESS 欄位大小 |
---|---|---|
bigint | Text | 255 |
binary(欄位大小) | Binary | 與 SQL Server 欄位大小相同 |
bit | Yes/No | |
char(欄位大小),其中欄位大小小於或等於 255 | Text | 與 SQL Server 欄位大小相同 |
char(欄位大小),其中欄位大小大於 255 | Memo | |
datetime | Date/Time | |
decimal(整數位數、小數位數) | Number | Decimal (Access Precision和 Scale 屬性符合 SQL Server 整數位數和小數位數)。 |
float | Number | Double |
image | OLE Object | |
int | Number | Long Integer |
money | Currency | |
nchar(欄位大小),其中欄位大小小於或等於 255 | Text | 與 SQL Server 欄位大小相同 |
nchar(欄位大小),其中欄位大小大於 255 | Memo | |
ntext | Memo | |
numeric(整數位數、小數位數) | Number | Decimal (Access Precision和 Scale 屬性符合 SQL Server 整數位數和小數位數)。 |
nvarchar(欄位大小),其中欄位大小小於或等於 255 | Text | 與 SQL Server 欄位大小相同 |
nvarchar(欄位大小),其中欄位大小大於 255 | Memo | |
nvarchar(MAX) | Memo | |
real | Number | Single |
smalldatetime | Date/Time | |
smallint | Number | Integer |
smallmoney | Currency | |
sql_variant | Text | 255 |
text | Memo | |
timestamp | Binary | 8 |
tinyint | Number | Byte |
uniqueidentifier | Number | Replication ID |
varbinary | Binary | 與 SQL Server 欄位大小相同 |
varbinary(MAX) | OLE Object | |
varchar(欄位大小),其中欄位大小小於或等於 255 | Text | 與 SQL Server 欄位大小相同 |
varchar(欄位大小),其中欄位大小大於 255 | Memo | |
varchar(MAX) | Memo | |
xml | Memo |
語軒閣: 將 Access 資料匯入或連結 Sql Server 資料 >>>>> Download Now
回覆刪除>>>>> Download Full
語軒閣: 將 Access 資料匯入或連結 Sql Server 資料 >>>>> Download LINK
>>>>> Download Now
語軒閣: 將 Access 資料匯入或連結 Sql Server 資料 >>>>> Download Full
>>>>> Download LINK 26