iT邦幫忙

2022 iThome 鐵人賽

DAY 22
1
Software Development

C# ASP.NET MVC實作: 30天打造屬於你的網站應用程式系列 第 22

(DAY 22)C# ASP .NET MVC實作: 30天打造屬於你的網站應用程式-網站佈署(二): Azure資料庫使用

  • 分享至 

  • xImage
  •  

接續昨天內容,今天來把最後的資料庫搞定吧~孩子就快生出來了加油!

● Azure資料庫建立

首先要在昨天已經申請好的Azure帳戶建立SQL資料庫,步驟如下:

  1. 在Azure服務中找到「SQL資料庫」並點選進入。

  2. 點選左上角「建立」or 按中間的「建立SQL資料庫」

  3. 如下圖紅框所示,需確認訂用帳戶與選擇資源群組,這邊選擇與網站部屬相同的資源群組;然後輸入資料庫名稱(自訂),輸入後要選取伺服器,第一次建立就點選「建立新的」。不過我們主要會用到的是建立後的伺服器,新建的資料庫不會用到,這後面會再說明。

  4. 參考下圖輸入伺服器名稱(自訂不能重複)、位置(自行選擇)、驗證方法(使用SQL驗證),並設定伺服器管理員登入的帳號與密碼,完成後按「確定」。

  5. 接著可以設定「計算+儲存體」內容,這邊Azure會依照設定的使用量和資料庫大小預估費用,不過因為免費的帳戶本身有送一些點數可以使用,所以目前不用擔心花到錢,這邊我們就維持預設的方案吧!

  6. 按下「檢閱+建立」,確認建立資料無誤後,點選「建立」即會開始進行資料庫部署,等待部署完成就可以了。

  7. 部署完成如下圖所示,點擊「前往資源」可以查看資料庫概況。

  8. 接著需設定防火牆權限,此步驟是為了可以於SSMS登入使用。

  9. 點擊「設定伺服器防火牆」,依照下圖紅框所示加入電腦IP位址,按下「儲存」即完成權限設定。

● SSMS下載與安裝

Azure環境部署完成後,接著要下載 SQL Server Management Studio (SSMS),我們要用來將原本的資料庫檔案(Local DB)附加至Azure資料庫內。

可點選以下連結進行下載:
https://learn.microsoft.com/zh-tw/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16

安裝流程就不多提了,安裝完成後操作步驟參考如下:

  1. 在程式集找到「Microsoft SQL Server Management Studio 18」程式並開啟。

  2. 開啟後會要求須先連線伺服器,這邊直接選擇預設伺服器與使用Windows驗證,點擊「連線」。

  3. 連線成功後就可以看到在左邊物件總管內,有系統內建的資料庫出現啦~

  4. 完成後先別急著關掉,接下來要準備加入Local DB了。

● 加入資料庫

接著來將原本的DB檔案附加至內建資料庫,藉此可以發佈到Azure上,步驟如下:

  1. 打開網站專案,找到存放DB檔案的App_Data資料夾,按右鍵選擇「在檔案總管中開啟資料夾」。

  2. 接著把裡面的資料庫檔案和log檔複製一份,貼上到D槽最外層部分(D:\),後面步驟說明為何會這樣做。

  3. 回到SSMS畫面,在物件總管「資料庫」地方點擊滑鼠右鍵,按「附加」。

  4. 進入附加資料庫畫面,點「加入」。

  5. 找到剛才複製Local DB檔案放置的路徑,選擇檔案並按下「確定」。這邊我自己測試發現如果路徑太多層的話,會找不到裡面的資料夾和檔案= =,所以才放到D槽最外層,但詳細原因為何還需要研究,如果有知道原因的朋友們可以回饋一下~

  6. 確認要附加的資料庫後,再次按下「確定」。

  7. 這時就可以看到Local DB 已經成功附加啦~

※補充:
如果在附加時出現失敗,訊息為「無法開啟實體檔案 "D:\dbShoppingCar.mdf"。作業系統錯誤 5: "5(存取被拒。)"。 (Microsoft SQL Server, 錯誤: 5120)」,或者是附加後的資料庫在名稱後面有顯示「唯讀」,代表可能原本Local DB放置的資料夾本身權限不夠,無法執行修改or寫入。可以選擇修改資料夾權限或者將Local DB移到權限足夠的資料夾,附加後修改資料庫唯讀屬性為False即可。

詳細可以參考以下文章說明:
https://dotblogs.com.tw/kevinya/2014/08/08/146205

● 將附加資料庫發佈至Azure

發佈至Azure的步驟如下:

  1. 在附加的資料庫上按右鍵,選擇「工作」→點選「將資料庫部署到 Microsoft Azure SQL Database」。

  2. 開始作業,點選「下一步」。

  3. 設定伺服器連接,點選「連接」後,會跳出登入伺服器視窗,輸入之前在Azure SQL建置的伺服器名稱、帳密,完成後按下「連線」。如果這邊有被擋掉不能連的話,可能需要回去Azure檢查加入防火牆設定是否有完成。

  4. 連線成功後會顯示在Azure Database的設定資訊,按「下一步」。

  5. 確認來源與目標資料庫,按下「完成」即會開始匯入資料庫到Azure。

  6. 作業完成後,按下「關閉」。

● 重設Entity Framework

最後需要來重新使用Entity Framework將資料庫選擇為Azure SQL,來取代原本的Local DB,步驟如下:

  1. 比照我們講過的Entity Framework操作流程,先在Model資料夾內新建一個ADO.NET模型,命名為「ShoppingCarAzure」好了~

  2. 選擇「來自資料庫的EF Designer」,然後按「下一步」。

  3. 按「新增連接」後會跳出連接屬性視窗,輸入伺服器名稱與登入帳密後,在下面下拉式選單會自動顯示該伺服器有的資料庫名稱,如果沒出現也可以手動輸入資料庫名稱。

  4. 確認要使用的資料連結為Azure的之後,選擇「是,在連接字串中包含敏感性資料」,另外將建立實體命名為「dbShoppingCarAzureEntities」,以和原本的Local DB做為區別,完成後按「下一步」。

  5. 勾選模型要包含的資料表,另外也將模型命名空間命名為「dbShoppingCarAzureModel」作區別,然後按下「完成」即會開始建立新的DB實體模型。

  6. 因為專案要改使用的新建立的Azure資料庫實體了,所以在HomeControllerMemberController下的db物件要改成如下:

dbShoppingCarAzureEntities db = new dbShoppingCarAzureEntities();
  1. 另外新建的Model在各資料表class的屬性會是沒有添加任何驗證Attribute的狀態,可以比照DAY 14內容將其加回去。

  2. 再次將網站專案發布至Azure,執行後發現就可以正確顯示首頁畫面啦~

※如果仍有發生錯誤,且畫面上有出現一組IP,將該IP加入防火牆權限後,應該就可以正常執行了。

● 小結

發佈成功後可以再測試一下各網頁功能是否正常,另外也可以自行再添加更多功能讓網頁變得更豐富,到此我們就算是完成了一個小小的作品啦~網站實作的介紹就到這,明天開始來補充一些ASP .NET MVC相關的知識,那就明天見~


上一篇
(DAY 21)C# ASP .NET MVC實作: 30天打造屬於你的網站應用程式-網站佈署(一): Azure雲端帳號建立
下一篇
(DAY 23)C# ASP .NET MVC實作: 30天打造屬於你的網站應用程式-Entity Framework的連線字串加密
系列文
C# ASP.NET MVC實作: 30天打造屬於你的網站應用程式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
shakeyoud1
iT邦新手 5 級 ‧ 2023-04-14 09:21:58

你好
我是菜鳥工程師
謝謝你的教學 非常實用 對我幫助很大
我有個問題想問
如果SQL都已經發佈到網路上之後
我如果要新增OrderDetail的欄位是出貨和結案
要怎麼做?

雖然我沒有實際操作過,但可以試試下面方式:
使用 Azure 入口網站
登入 Azure 入口網站並導航至您的 Azure SQL Database 資源。
在資源概觀頁面中,選擇「Query editor (預覽版)」選項。
在 Query editor(查詢編輯器) 中,輸入您的 ALTER TABLE 陳述式,並點擊「Run」按鈕以執行該陳述式。您可以在下方查看執行結果和錯誤訊息。

0
hsinhsin
iT邦新手 5 級 ‧ 2023-06-09 15:16:06

您好,正跟著步驟做
文中提及因有免費帳戶的點數(200USD,效期30天內),故先不用考慮到花費
請問

  1. 30天內,若不需使用可以隨時砍掉伺服器的租借嗎,只要刪除所有使用資源,費用就不會再扣了嗎
  2. 30天後,若伺服器還在,只要不帳戶升級,該租費就會自動停止不再續扣嗎

我要留言

立即登入留言