練習 - 連線到您的資料庫並新增範例資料

已完成

將資料庫連線到您的應用程式之前,建議先確認您是否可以連線,然後新增基本資料表,再使用範例資料。

我們會為您的 Azure SQL 資料庫維護基礎結構、軟體更新與修補程式。 您可以如同任何其他 SQL Server 安裝一樣使用 Azure SQL 資料庫。 例如,您可以使用 Visual Studio、SQL Server Management Studio、Azure Data Studio 或其他工具來管理您的 Azure SQL Database。

您可自行決定如何存取您的資料庫,以及將它連線到您的應用程式。 為增加一些使用資料庫的經驗,讓我們直接從入口網站連線資料庫、建立資料表,並執行一些基本的 CRUD 作業。 在此,您會學到:

  • Cloud Shell 的功能,以及如何從入口網站存取它。
  • 如何從 Azure CLI 存取包括連接字串在內的資料庫資訊。
  • 如何使用 sqlcmd 連線到您的資料庫。
  • 如何使用基本的資料表和一些範例資料初始化您的資料庫。

Azure Cloud Shell 是什麼?

Azure Cloud Shell 是以瀏覽器為基礎的殼層體驗,用於管理和開發 Azure 資源。 您可以將 Cloud Shell 視為在雲端執行的互動式主控台。

在幕後,Cloud Shell 是在 Linux 上執行。 但視您偏好 Linux 或 Windows 環境而定,您有兩種體驗可供選擇:Bash 與 PowerShell。

從任何地方都可以存取 Cloud Shell。 除入口網站外,您也可以從 shell.azure.com、Azure 行動應用程式或從 Visual Studio Code 存取 Cloud Shell。

Cloud Shell 包含熱門的工具和文字編輯器。 以下將簡短介紹 azjqsqlcmd 公用程式,這是您在此練習中使用的三個工具。

  • az 也稱為 Azure CLI。 它是處理 Azure 資源的命令列介面。 您使用此介面來取得包括連接字串在內的資料庫相關資訊。
  • jq 是命令列 JSON 剖析器。 您使用管道將輸出從 az 命令傳送到此工具,以擷取 JSON 輸出中的重要欄位。
  • sqlcmd 可讓您在 SQL Server 上執行陳述式。 您使用 sqlcmd 建立與 Azure SQL 資料庫互動的工作階段。

取得您的 Azure SQL 資料庫資訊

連線到您的資料庫之前,最好先確認它存在並已上線。

在此,您要使用 az 公用程式列出您的資料庫,顯示與 Logistics 資料庫相關的一些資訊,包括其大小上限和狀態。

  1. 您執行的 az 命令需要資源群組名稱與 Azure SQL 邏輯伺服器名稱。 若要儲存按鍵,請執行此 azure configure 命令將它們指定為預設值。

    [server-name] 取代為您建立的 Azure SQL 邏輯伺服器名稱,並以您用於伺服器的資源群組取代 [resource-group]

    az configure --defaults group=[resource-group] sql-server=[server-name]
    

    注意

    視您在入口網站中所在的窗格而定,您的 SQL Server 名稱可能會顯示為 FQDN (例如 servername.database.windows.net)。 不過,針對此命令,您只需要不含. database.windows.net 尾碼的邏輯名稱。

  2. 執行下列 az sql db list 命令,以列出您 Azure SQL 邏輯伺服器上的所有資料庫:

    az sql db list
    

    您會看到大型 JSON 區塊做為輸出。

  3. 因為我們只要取得資料庫名稱,所以請再執行一次命令。 但這次,使用管道將輸出傳遞到 jq,以只顯示名稱欄位。

    az sql db list | jq '[.[] | {name: .name}]'
    

    您應該會看到此輸出:

    [
      {
        "name": "Logistics"
      },
      {
        "name": "master"
      }
    ]
    

    Logistics 是您的資料庫。 和 SQL Server 一樣,master 系統資料庫包含伺服器中繼資料,例如登入和系統組態設定。

  4. 執行下列 az sql db show 命令,以取得 Logistics 資料庫的詳細資料:

    az sql db show --name Logistics
    

    和之前一樣,您看到的輸出會是一大區塊的 JSON。

  5. 請再次執行 命令。 這次,使用管道將輸出輸送至 jq,將輸出限制在只有名稱、大小上限與 Logistics 資料庫狀態。

    az sql db show --name Logistics | jq '{name: .name, maxSizeBytes: .maxSizeBytes, status: .status}'
    

    您會看到資料庫在線上,以及資料庫可儲存的最大資料量。

    {
      "name": "Logistics",
      "maxSizeBytes": 2147483648,
      "status": "Online"
    }
    

連接到您的資料庫

現在,您稍微了解您的資料庫,讓我們使用 sqlcmd 來與它連線,建立保留傳輸驅動程式相關資訊的資料表,以及執行一些基本的 CRUD 作業。

請記住,CRUD 表示建立讀取更新刪除。 這些字詞是您對資料表資料執行的作業,而且是您應用程式所需要的四種基本作業。 現在可以驗證能否執行每一項作業。

  1. 執行下列 az sql db show-connection-string 命令,以 sqlcmd 可使用的格式取得 Logistics 資料庫的連接字串:

    az sql db show-connection-string --client sqlcmd --name Logistics
    

    您的輸出會類似下列範例。 請複製此輸出以便用於下一個步驟。

    "sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U <username> -P <password> -N -l 30"
    
  2. 執行前一個步驟輸出中的 sqlcmd 陳述式,以建立互動式工作階段。 移除周圍引號,並以您在建立資料庫時指定的使用者名稱和密碼取代 <username><password>。 以下是範例:

    sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    提示

    將密碼以單引號括住,不讓 "&" 和其他特殊字元解譯為處理指示。

    重要

    您可能會看到類似下列範例的錯誤訊息:

    Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server:
    Cannot open server 'contoso' requested by the login.
    Client with IP address 'nnn.nnn.nnn.nnn' is not allowed to access the server.
    To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule
    on the master database to create a firewall rule for this IP address or address range.
    It may take up to five minutes for this change to take effect.
    

    若發生此錯誤,您必須為用戶端新增另一個防火牆規則。 若要這樣,請執行下列步驟:

    • 登入 Azure 入口網站

    • 從 Azure 首頁的 [Azure 服務] 下,選取 [所有資源]。 [所有資源] 窗格會隨即出現。

    • 搜尋並選取您的資料庫。 SQL 資料庫的 [Logistics] 窗格會隨即出現。

    • 在頂端功能表列上,選取 [設定伺服器防火牆]。 [網路功能] 窗格隨即出現。

    • 在 [防火牆規則] 區段中,選取 [新增防火牆規則]。 [新增防火牆規則] 窗格隨即出現。

    • 指定唯一的 [規則名稱],然後同時為 [開始 IP] 與 [結束 IP] 欄位輸入來自錯誤訊息的 IP 位址。 選取 [確定]。

    • 選取 [儲存]。

    • 再次執行 sqlcmd 陳述式,以啟動您的互動式 sqlcmd 工作階段。 您應該會看到如下列範例的內容:

    sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U martina -P 'password1234$' -N -l 30
    

    現在您已啟動 sqlcmd 工作階段,其餘命令會使用 Transact-SQL 或 T-SQL 語言。

    提示

    在本課程模組中執行 T-SQL 命令時,第二行的 GO 可能不會複製到 sqlcmd 提示。 輸入命令的第一行之後,您可能需要在 GO 命令中輸入。 若沒有此命令,T-SQL 命令不會執行,因此請務必執行 GO 命令。

  3. 從您的 sqlcmd 工作階段,執行下列 T-SQL 陳述式以建立名為 Drivers 的資料表:

    CREATE TABLE Drivers (DriverID int, LastName varchar(255), FirstName varchar(255), OriginCity varchar(255));
    GO
    

    資料表包含四個欄位:唯一的識別碼、司機的姓氏和名字,以及司機的設籍縣市。

  4. 執行下列 T-SQL 陳述式來確認 Drivers 資料表是否存在:

    SELECT name FROM sys.tables;
    GO
    

    您應該會看到此輸出:

    name
    --------------------------------------------------------------------------------------------------------------------------------
    Drivers
    
    (1 rows affected)
    
  5. 若要測試建立作業,請執行下列 T-SQL 陳述式,將範例資料列新增至資料表:

    INSERT INTO Drivers (DriverID, LastName, FirstName, OriginCity) VALUES (123, 'Zirne', 'Laura', 'Springfield');
    GO
    

    此輸出表示作業成功:

    (1 rows affected)
    
  6. 若要測試讀取作業,請執行下列 T-SQL 陳述式,從資料表的所有資料列列出 DriverIDOriginCity 資料行:

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    您會看到一個結果,其中包含您在上一個步驟中建立的資料列中的 DriverIDOriginCity

    DriverID    OriginCity
    ----------- --------------------------
            123 Springfield
    
    (1 rows affected)
    
  7. 若要測試更新作業,請執行下列 T-SQL 陳述式,將 DriverID 為 123 的司機設籍縣市從 "Springfield" 變更為 "Boston":

    UPDATE Drivers SET OriginCity='Boston' WHERE DriverID=123;
    GO
    
  8. 執行下列 T-SQL 陳述式以列出 DriverIDOriginCity 資料行:

    SELECT DriverID, OriginCity FROM Drivers;
    GO
    

    您現在應該會得到下列輸出。 請注意,OriginCity 反映更新為 Boston。

    DriverID    OriginCity
    ----------- --------------------------
            123 Boston
    
    (1 rows affected)
    
  9. 最後,執行下列 T-SQL 陳述式來刪除記錄,以測試刪除作業:

    DELETE FROM Drivers WHERE DriverID=123;
    GO
    
    (1 rows affected)
    
  10. 執行下列 T-SQL 陳述式以確認 Drivers 資料表是空的:

    SELECT COUNT(*) FROM Drivers;
    GO
    

    您會看到資料表不包含任何資料列。

    -----------
              0
    
    (1 rows affected)
    

現在您已經有從 Cloud Shell 使用 Azure SQL Database 的一般概念,您可以取得最愛的 SQL 管理工具連接字串 - 無論它是來自 SQL Server Management Studio、Visual Studio 或其他項目。

Cloud Shell 讓您輕鬆存取及使用 Azure 資源。 因為 Cloud Shell 是以瀏覽器為基礎,所以您可以從 Windows、macOS 或 Linux 存取它;其實只要是有網頁瀏覽器的系統皆可。

您可以獲得執行 Azure CLI 命令取得 Azure SQL Database 資訊的一些實際操作體驗。 而且還練習了 T-SQL 技能。

在下一個單元中,我們會總結此課程模組,並描述如何卸載您的資料庫。