2012年2月23日 星期四

將 Access 資料匯入或連結 SQL Server 資料

如果您的部門或工作小組使用 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 資料庫將資料複製至該資料表中。在匯入作業的最後,您可以選擇將匯入作業的詳細資料儲存為規格。
 附註   匯入規格可以幫助您將來進行重複匯入的作業,而不需要每次都使用 [匯入精靈] 的步驟。
  1. 找到包含您要匯入之資料的 SQL Server 資料庫。連絡資料庫的管理員以取得連線資訊。
  2. 確認您要匯入的資料表或檢視。您可以在單一匯入作業中匯入多個物件。
  3. 檢閱來源資料並考量下列事項:
    • Access 不支援在資料表中容納超過 255 個欄位,因此 Access 只會匯入前 255 欄。
    • Access 資料庫的大小上限為 2 GB (不包含系統物件所需的空間)。如果 SQL Server 資料庫包含許多大型資料表,您可能無法將所有資料表匯入至單一的 .accdb 檔案。在這種情況下,您可能需要考慮將資料連結到您的 Access 資料庫。
    • 在匯入作業的最後,Access 不會在相關資料表之間自動建立關聯性。您必須使用 [關聯性] 視窗中的選項,以手動的方式在新增及現有的資料表之間建立關聯性。若要顯示 [關聯性] 視窗:
      • 按一下 [檔案] 索引標籤,然後按一下 [資訊] 索引標籤上的 [關聯性]
  4. 確認要匯入 SQL Server 資料的 Access 資料庫。
請確定您擁有將資料新增至 Access 資料庫的必要權限。如果您不想將資料儲存至任何現有的資料庫,請建立一個空白資料庫,只要按一下 [檔案] 索引標籤,然後按一下 [開新檔案] 索引標籤上的 [空白資料庫] 即可。
  1. 檢閱 Access 資料庫中的資料表 (如果有的話)。
匯入作業會建立與 SQL Server 物件具有相同名稱的資料表。如果已經使用過該名稱,Access 便會在新資料表的名稱中加上 1,例如,Contacts1 (如果 Contacts1 也已經被使用,Access 便會建立 Contacts2,依此類推)。
 附註   Access 不會在進行匯入作業時覆寫資料庫中的資料表,而且您也無法將 SQL Server 資料附加到現有的資料表中。

匯入資料

  1. 開啟目的資料庫。
在 [外部資料] 索引標籤上的 [匯入及連結] 群組中,按一下 [ODBC 資料庫]
  1. 按一下 [匯入來源資料至目前資料庫的新資料表],然後按一下 [確定]
  2. 在 [選取資料來源] 對話方塊中,如果您要使用的 .dsn 檔案已經存在,請按一下清單中的檔案。
  1. 按一下 [確定] 以關閉 [選取資料來源] 對話方塊。
Access 便會顯示 [匯入物件] 對話方塊。
  1. 在 [資料表] 底下,按一下您要匯入的每個資料表或檢視,然後按一下[確定]
  2. 如果出現 [選取唯一的記錄識別碼] 對話方塊,表示 Access 無法判斷哪個欄位或哪些欄位可以唯一地識別特定物件的每一列。在這種情況下,請選取每一列的唯一欄位或欄位組合,然後按一下 [確定]。如果您不確定如何選取,請洽詢 SQL Server 資料庫管理員。
Access 會將資料匯入。若想要在稍後重複進行匯入作業,可以將匯入步驟儲存為匯入規格,方便將來輕鬆地重複執行相同的匯入步驟。您需要在電腦上安裝 Microsoft Office Outlook 才可建立工作。
  1. 在 [取得外部資料 - ODBC 資料庫] 對話方塊中,按一下 [儲存匯入步驟]底下的 [關閉]。Access 便會完成匯入作業,並在功能窗格中顯示一個或多個新的資料表。
若想要將匯入儲存為工作以供重複使用,請繼續下一節。

儲存並使用匯入設定

 附註   您必須安裝 Microsoft Office Outlook 才可建立工作。
  1. 在 [取得外部資料 - ODBC 資料庫] 對話方塊的 [儲存匯入步驟] 底下,選取 [儲存匯入步驟] 核取方塊。一組額外的控制項隨即出現。
  2. 在 [另存新檔] 方塊中輸入匯入規格的名稱。
  3. 在 [描述] 方塊中輸入描述。這個步驟是選擇性的。
  4. 若要定期 (例如每週或每月) 執行操作,請選取 [建立 Outlook 工作] 核取方塊。這樣便會在 Microsoft Outlook 2010 中建立一項工作,讓您執行規格。
  5. 按一下 [儲存匯入]
如果沒有安裝 Outlook,當您按一下 [儲存匯入] 時,Access 便會顯示錯誤訊息。
 附註   如果沒有正確設定 Outlook 2010,[Microsoft Outlook 2010 啟動精靈] 就會啟動。請遵循精靈的指示設定 Outlook。
您可以選擇建立 Outlook 工作。若要定期或依週期性間隔執行匯入作業,則在 Outlook 中建立工作會很有用。不過即使未建立工作,Access 還是會儲存規格。

建立 OUTLOOK 工作

如果您選取 [建立 Outlook 工作] 核取方塊,Access 便會啟動 Office Outlook 2010,並顯示一項新工作。請遵循下列步驟設定工作:
 附註   如果沒有安裝 Outlook,Access 便會顯示錯誤訊息。如果沒有正確設定 Outlook,[Outlook 設定精靈] 就會啟動。請遵循精靈的指示設定 Outlook。
  1. 檢閱並修改工作設定,例如 [開始日期][到期日] 和 [提醒]
如果要使匯入工作成為週期性事件,請按一下 [週期性] 並填入適當的資訊。
  1. 按一下 [儲存後關閉]

執行儲存的工作

  1. 在 Outlook 功能窗格中,按一下 [工作],然後按兩下您所要執行的工作。
  2. 在 [工作] 索引標籤上的 [Microsoft Access] 群組中,按一下 [執行匯入]
  3. 切換回到 Access 視窗,然後按下 F5 鍵重新整理功能窗格。
  4. 按兩下匯入的資料表,在資料工作表檢視中開啟它。
  5. 確定所有的欄位和記錄都已匯入,而且沒有任何錯誤。
  6. 用滑鼠右鍵按一下功能窗格中的匯入資料表,然後按一下快顯功能表中的 [設計檢視]。檢閱欄位資料型別和其他欄位屬性。

連結 SQL Server 資料

由於資料儲存在資料表中,因此當您連結至 SQL Server 資料庫中的資料表或檢視時,Access 會建立一個新的資料表 (通常稱為連結資料表),以反映來源物件的結構和內容。您可以在 SQL Server 中變更資料,也可以在 Access 的 [資料工作表] 檢視或 [表單] 檢視中變更資料。您在一個位置對資料所做的變更會反映到其他位置。不過,若要進行結構變更 (例如移除或變更資料行),則必須從 SQL Server 資料庫或從連線至該資料庫的 Access 專案執行這項操作。您無法在使用 Access 時,新增、刪除或變更連結資料表中的欄位。

準備連結

  1. 找到您要連結資料的 SQL Server 資料庫。連絡資料庫管理員以取得連線資訊。
  2. 確任您所要連結的資料表和檢視。您可以在單一連結作業中連結到多個物件。
  3. 檢閱來源資料並考量下列事項:
    • Access 不支援在資料表中容納超過 255 個欄位,因此連結資料表只會包含您所連結之物件的前 255 個欄位。
    • 在 SQL Server 物件中唯讀的資料行,在 Access 中也會是唯讀的。
    • 您將無法新增、刪除或修改 Access 中連結資料表的資料行。
  4. 確認您要建立連結資料表的 Access 資料庫。請確定您擁有將資料新增到資料庫的必要權限。如果您不想將資料儲存至任何現有的資料庫,請建立一個新的空白資料庫,只要按一下 [檔案] 索引標籤,然後按一下[開新檔案] 索引標籤上的 [空白資料庫] 即可。
  5. 檢閱 Access 資料庫中的資料表,當您連結至 SQL Server 資料表或檢視時,Access 會建立與來源物件具有相同名稱的連結資料表。如果已經使用過該名稱,Access 便會在新資料表的名稱中加上 1,例如,Contacts1 (如果 Contacts1 也已經被使用,Access 便會建立 Contacts2,依此類推)。
  6. 若要連結至資料,請開啟目的資料庫。
  7. 在 [外部資料] 索引標籤上的 [匯入及連結] 群組中,按一下 [ODBC 資料庫]
  8. 按一下 [以建立連結資料表的方式,連結至資料來源],然後按一下 [確定]
  9. 在 [選取資料來源] 對話方塊中,按一下您要使用的 .dsn 檔案,或是按一下 [新增] 以建立新的資料來源名稱 (DSN)。
  10. 在 [選取資料來源] 對話方塊中,如果您要使用的 .dsn 檔案已經存在,請按一下清單中的檔案。
  1. 按一下 [確定]
Access 便會顯示 [連結資料表] 對話方塊。
  1. 在 [資料表] 底下,按一下您要連結的每個資料表或檢視,然後按一下[確定]
  1. 如果出現 [選取唯一的記錄識別碼] 對話方塊,表示 Access 無法判斷哪個欄位或哪些欄位可以唯一地識別特定物件的每一列。在這種情況下,請選取每一列的唯一欄位或欄位組合,然後按一下 [確定]。如果您不確定如何選取,請洽詢 SQL Server 資料庫管理員。
Access 便會完成連結作業,並在功能窗格中顯示一個或多個新的連結資料表。
 重要事項   每當您開啟連結資料表或來源物件時,都可以在其中看到最新的資料。不過,對 SQL Server 物件進行的結構變更則不會自動反映到連結資料表中。

套用最新版 SQL SERVER 物件結構,更新連結的資料表:

  1. 用滑鼠右鍵按一下功能窗格中的資料表,然後按一下快顯功能表中的[連結資料表管理員]
  2. 選取您要更新之每個連結資料表旁邊的核取方塊,或按一下 [全選] 以選取全部的連結資料表。
  3. 按一下 [確定]
如果更新成功,Access 便會顯示一則表示成功的訊息;如果不成功,Access 便會顯示一則錯誤訊息。
  1. 按一下 [關閉] 以關閉 [連結資料表管理員]。

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 欄位大小
bigintText255
binary(欄位大小)Binary與 SQL Server 欄位大小相同
bitYes/No
char(欄位大小),其中欄位大小小於或等於 255Text與 SQL Server 欄位大小相同
char(欄位大小),其中欄位大小大於 255Memo
datetimeDate/Time
decimal(整數位數小數位數)NumberDecimal (Access Precision和 Scale 屬性符合 SQL Server 整數位數和小數位數)。
floatNumberDouble
imageOLE Object
intNumberLong Integer
moneyCurrency
nchar(欄位大小),其中欄位大小小於或等於 255Text與 SQL Server 欄位大小相同
nchar(欄位大小),其中欄位大小大於 255Memo
ntextMemo
numeric(整數位數小數位數)NumberDecimal (Access Precision和 Scale 屬性符合 SQL Server 整數位數和小數位數)。
nvarchar(欄位大小),其中欄位大小小於或等於 255Text與 SQL Server 欄位大小相同
nvarchar(欄位大小),其中欄位大小大於 255Memo
nvarchar(MAX)Memo
realNumberSingle
smalldatetimeDate/Time
smallintNumberInteger
smallmoneyCurrency
sql_variantText255
textMemo
timestampBinary8
tinyintNumberByte
uniqueidentifierNumberReplication ID
varbinaryBinary與 SQL Server 欄位大小相同
varbinary(MAX)OLE Object
varchar(欄位大小),其中欄位大小小於或等於 255Text與 SQL Server 欄位大小相同
varchar(欄位大小),其中欄位大小大於 255Memo
varchar(MAX)Memo
xmlMemo

1 則留言:

  1. 語軒閣: 將 Access 資料匯入或連結 Sql Server 資料 >>>>> Download Now

    >>>>> Download Full

    語軒閣: 將 Access 資料匯入或連結 Sql Server 資料 >>>>> Download LINK

    >>>>> Download Now

    語軒閣: 將 Access 資料匯入或連結 Sql Server 資料 >>>>> Download Full

    >>>>> Download LINK 26

    回覆刪除