亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Access > 正文

將現有的Access數據庫升級為SQL

2024-09-07 19:05:04
字體:
來源:轉載
供稿:網友

很多access和SQL Server開發人員都經常面臨著將一個Access數據庫升級到SQL Server數據庫的問題。由于存在現有的Access升級向導,這一轉變的過程就會變得相當簡單,尤其是當你建立一個與SQL Server數據相聯系的ADP的時候。然而,向導并不是十全十美的,需要解決的問題還是大有存在。


首先,有些對象并不是簡單的升級,所以這時你不得不人為地處理。第二,很多Access特性──比如一些查詢類型,對象,以及特定的數據類型在你沒有做好升級之前的準備的情況下就會導致錯誤的產生。現在,讓我們討論一下在數據庫升級過程中可能面臨的問題,我將提供能夠解決問題的一些通用的指導方法,最后,你必須花一定的時間和精力將這些知識應用到開發之中。

哪些不能夠升級?
在處理實際的問題之前,讓我們看看不能隨意升級的對象,它們包括以下:

交叉表查詢
包含SQL DISTINCTROW關鍵字的任何查詢
所有的隱藏對象
作為參數的表格數據的查詢(這些表格可以升級,但它們卻不能正確的運行)
Pass-Through查詢
SQL數據定義語言查詢(比如CREATE TABLE, ALTER TABLE, 以及DROP語句)
這些Access對象需要特定的處理。具體的,你將建立一個可比較的SQL Server對象,除此之外,SQL Server不支持Jet安全特性,所以你必須使用Windows認證和/或SQL Server安全機制。

包括的問題點
在數據庫的升級之前,如果你已經知道哪些地方將可能導致錯誤并知道如何處理產生的錯誤,數據庫升級過程中導致的錯誤的可能性將大大地減少。我能夠提供的數據庫升級的最好的建議是在開發之前做好最完整的計劃。現在,我將列舉數據庫升級過程中可能會導致產生的問題──如果你沒有做好計劃之前的準備。

不支持的日期
 
關于日期,在Access和SQL Server之間都存在很大的差別。Access支持很大范圍的日期,從100年1月1日到9999年12月31日。相反,SQL Server支持的日期從1753年1月1日到9999年12月31日。數據庫的升級向導無法升級包含SQL Server不支持的日期的表格。這就意味著在升級之前你必須人工地處理這些日期。幸運的是,這一問題只影響少數的數據庫。

與表格控制相關的查詢
開發人員通常會使用表格控制的查詢來限制或詢問一個數據來源。一個表格可以提供將數據顯示在一個特定報告中的多種選擇。例如,SQL SELECT語句包含了用戶的輸入:

 SELECT Orders.RequiredDate, Orders.ShippedDate, Orders.Freight,
    Orders.ShipName, Orders.ShipAddress, Orders.OrderDate
FROM Orders
WHERE
 Orders.OrderDate Between [Forms]![DateFilter]![DateFrom] And [Forms]![DateFilter]![DateTo]));

為了限定報告中的數據,用戶可以輸入一個開始和結束的日期到列表(DateFrom 和DateTo)。其他的代碼可以打開并顯示滿足用戶輸入的兩個日期之間的記錄。

因為這種查詢方式被Jet處理,表格中產生的問題可以很快被解決。然而,當數據庫升級時,SQL Server不會涉及到表格控制,結果通常為查詢失敗。為了修正這一查詢方式,開發人員必須更改表格。我建議你使用輸入參數屬性,并將數值傳遞到SQL Server存儲程序。

交叉表查詢
SQL Server不支持Jet TRANSFORM語句──這一語句可以使一個交叉表查詢成為可能。例如,數據庫升級向導支持以下查詢方式:

TRANSFORM Sum(CCur([Order Details].UnitPRice*[Quantity]*(1-[Discount])/100)*100)
    AS ProductAmount
SELECT Products.ProductName, Orders.CustomerID, Year([OrderDate]) AS OrderYear
FROM Products INNER JOIN (Orders INNER JOIN [Order Details]
ON Orders.OrderID = [Order Details].OrderID) ON Products.ProductID =
    [Order Details].ProductID
WHERE Orders.OrderDate Between #1/1/1997# And #12/31/1997#
GROUP BY Products.ProductName, Orders.CustomerID, Year([OrderDate])
PIVOT "Qtr " & DatePart("q",[OrderDate],1,0) In ("Qtr 1","Qtr 2","Qtr 3","Qtr 4")

 

還好,你無需在SQL Server中使用Transact-SQL (T-SQL) CASE關鍵詞重新編寫一個Access的交叉表查詢。下面的SELECT語句描述了使用T-SQL方式重新建立一個交叉表查詢的語法:

SELECT Customers.CustomerID, Customers.CustomerName
    SUM (Case When Orders.Orderdate BETWEEN '01-Jan-1990' AND '31-Dec-1996'
    Then [UnitPrice]*[Quantity] Else 0 End) as 1997)
FROM Customers INNER JOIN Orders
ON CustomerID=Orders.CustomerID

 

隱藏對象
所有的隱藏對象在數據庫升級過程中都被忽略。對此,你最好的處理方法是使用程序對象的GetHiddenAttribute屬性檢查對象。例如,以下代碼使用這一方法決定對象是否被隱藏。
Dim IsHidden As Boolean
If application.GetHiddenAttribute(objtype, objname) Then  
  IsHidden = True
End If

如果特定的對象被隱藏,IsHidden布爾變量將被為True。

包含索引的表格
 
數據庫升級向導不支持沒有索引或其他限制的表格。升級向導可以升級一個無索引的表格,但其轉換之后只能成為一個只讀的表格。幸運的是,解決這一問題很簡單:添加一個索引到每一個沒有索引的表格。一旦你已經完成升級數據庫,請記住將添加的索引刪除。

數據庫升級操作步驟
一旦你已經做好一切準備,并確定操作可以開始。數據庫升級向導可以為你提供三種選擇:

輸出Access表格到SQL Server并鏈接到Access數據庫
使用Pass-Through查詢與SQL Server的后臺服務器的表格相互通訊
將整個Access數據庫移動到一個Access數據庫工程(其只與SQL Server聯系)
為了啟動數據庫升級向導,先從工具菜單欄中選擇數據庫功能,然后從子菜單中選擇升級向導。向導的第一個面板提供兩種選擇:你可以建立一個新的SQL Server 數據庫來存放Access表格,如圖A所示,或者你可以在一個現成的SQL Server數據庫中添加表格。選擇一個現成的SQL Server數據庫將需要輸入一個數據服務名稱(DSN)。

圖 A

選擇建立一個新的數據庫或者使用一個現成的數據庫
 
第二個面板要求獲得SQL Server范例的信息。除此之外,你必須認證安全機制(如果存在)和為新的數據庫提供一個缺省的名稱,如圖B所示。
圖B
 

為一個新的數據庫命名

在這點上,你可以將需要的表格復制到SQL Server,你也可以指出完成的部分將成為一個完整的ADP或者一個被鏈接的表格,如圖C所示。

圖 C

指明一個ADP或者一個被鏈接的表格


避開麻煩

每一個開發人員都有不同的數據庫升級操作的經驗,所以無法保證第一次操作就能夠達到成功。然而,如果你遵循本文中提供的有關規則,你應該遇到更少的錯誤,即使碰到,你也可以很容易地修正錯誤,并繼續操作。


 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av免费看网站| 成人精品视频在线| 国产精品久久久久久av福利软件| 久热在线中文字幕色999舞| 上原亚衣av一区二区三区| 国产欧美一区二区三区视频| 欧美有码在线观看视频| 日韩av在线直播| 亚洲第一网站免费视频| 精品福利樱桃av导航| 欧美日韩在线视频一区二区| 一本色道久久综合狠狠躁篇的优点| 国产福利精品在线| 久热精品视频在线观看| 中文字幕国产日韩| 欧美日韩国产第一页| 国产精品久久久久高潮| 欧美日韩一二三四五区| 九色成人免费视频| 91精品国产乱码久久久久久久久| 热99精品里视频精品| 亚洲第一福利网| 亚洲无限乱码一二三四麻| 国产精品扒开腿做爽爽爽的视频| 久久久噜久噜久久综合| 国产成人精品一区| 欧美国产精品va在线观看| 国产免费一区二区三区在线观看| 91精品久久久久久久久| 久久午夜a级毛片| 国产精品亚洲аv天堂网| 不卡av在线网站| 亚洲aaaaaa| 日韩国产欧美区| 久久久之久亚州精品露出| 日韩一二三在线视频播| 成人免费视频xnxx.com| 日韩欧美中文字幕在线观看| 国产精品视频公开费视频| 深夜精品寂寞黄网站在线观看| 久久精品久久久久电影| www.xxxx精品| 8090理伦午夜在线电影| 91亚洲国产精品| 最近的2019中文字幕免费一页| 亚洲字幕在线观看| 亚洲男人天堂九九视频| 一区二区三区美女xx视频| 亚洲免费电影在线观看| 成人性生交大片免费看视频直播| 欧美视频在线观看免费网址| 亚洲欧洲中文天堂| 久久久久久这里只有精品| 91精品久久久久久久久久久久久| 欧美自拍大量在线观看| 欧美电影免费观看电视剧大全| 日韩网站免费观看| 精品视频久久久久久| 中文字幕欧美日韩va免费视频| 色播久久人人爽人人爽人人片视av| 欧美另类老肥妇| 清纯唯美亚洲综合| 日韩av在线免费观看| 精品丝袜一区二区三区| 亚洲欧洲午夜一线一品| 中文字幕精品久久| 国产日韩欧美在线| 国产精品第一页在线| 中文国产亚洲喷潮| 久久影院中文字幕| 91亚洲国产成人久久精品网站| 午夜精品一区二区三区在线视| 亚洲四色影视在线观看| 日韩av网址在线| 欧美午夜宅男影院在线观看| 美女视频黄免费的亚洲男人天堂| 欧美日韩国产精品一区二区三区四区| 日韩欧美在线中文字幕| 欧美亚洲成人xxx| 国产精品吹潮在线观看| 神马久久久久久| 久久视频免费观看| 有码中文亚洲精品| 欧美精品videos| 日韩一区视频在线| 九九综合九九综合| 亚洲成人在线视频播放| 国产精品com| 少妇精69xxtheporn| 亚洲天堂色网站| 成人精品一区二区三区电影黑人| 久久久999精品视频| 久久视频精品在线| 国产精品流白浆视频| 精品久久久久久久久国产字幕| 91国偷自产一区二区三区的观看方式| 国产综合色香蕉精品| 欧美激情视频网| 欧美日韩在线影院| 久久精品在线播放| 欧美一区二区三区免费观看| 欧美性生交xxxxxdddd| 亚洲第一福利在线观看| 青青久久av北条麻妃海外网| 久久久噜久噜久久综合| 久久99青青精品免费观看| 三级精品视频久久久久| 国产精品69久久久久| 日韩有码在线视频| 久久久久久久电影一区| 777国产偷窥盗摄精品视频| 日韩av在线直播| 亚洲福利在线看| 亚洲天堂网站在线观看视频| 97视频免费在线观看| 亚洲第一国产精品| 精品无人国产偷自产在线| 成人亚洲综合色就1024| 中文字幕亚洲专区| 日本免费一区二区三区视频观看| 国产精品日韩久久久久| 国产精品海角社区在线观看| 日韩精品免费在线播放| 69影院欧美专区视频| 精品久久久久久中文字幕大豆网| 成人国产亚洲精品a区天堂华泰| 中文字幕精品—区二区| 91影院在线免费观看视频| 欧美一级淫片播放口| 精品无人区乱码1区2区3区在线| 欧美孕妇性xx| 中文字幕日本精品| 精品免费在线观看| 久久国产天堂福利天堂| 欧美极品美女视频网站在线观看免费| 91精品国产91久久久久久吃药| 性欧美视频videos6一9| 正在播放国产一区| 欧美性猛交xxxx乱大交蜜桃| 中文字幕少妇一区二区三区| 亚洲一区国产精品| 日韩欧美亚洲成人| 黄色91在线观看| 热99久久精品| 国产99久久精品一区二区永久免费| 97**国产露脸精品国产| 中文字幕成人在线| 国产亚洲综合久久| 国产精品96久久久久久| 精品动漫一区二区三区| 久久久久久91香蕉国产| 国产欧美日韩中文| 中文字幕亚洲第一| 亚州国产精品久久久| 国产精品日日摸夜夜添夜夜av| 色999日韩欧美国产| 久久久久久尹人网香蕉| 欧美日韩国产综合新一区| 69国产精品成人在线播放| 国产精品白丝jk喷水视频一区| 成人在线视频福利| 久久精品亚洲94久久精品| 欧美大片免费观看在线观看网站推荐| 国产欧洲精品视频|