在本快速入門(mén)中,使用 Docker 拉取和運(yùn)行 Azure SQL Edge 容器映像。 然后使用 sqlcmd 連接,以創(chuàng)建第一個(gè)數(shù)據(jù)庫(kù)并運(yùn)行查詢。
此映像包含基于 Ubuntu 18.04 的 Azure SQL Edge。 它可與 Linux 上或用于 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+ 配合使用。
必備條件
·任何受支持的 Linux 分發(fā)或用于 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+。 有關(guān)詳細(xì)信息,請(qǐng)參閱 Install Docker(安裝 Docker)。 由于 Azure SQL Edge 映像基于 Ubuntu 18.04,建議使用 Ubuntu 18.04 Docker 主機(jī)。
·Docker overlay2 存儲(chǔ)驅(qū)動(dòng)程序。 這是大多數(shù)用戶的默認(rèn)設(shè)置。 如果發(fā)現(xiàn)自己未使用此存儲(chǔ)提供程序并且需要進(jìn)行更改,請(qǐng)參閱 docker 文檔中有關(guān)配置 overlay2 的說(shuō)明和警告。
·至少 10 GB 的磁盤(pán)空間。
·至少 1 GB 的 RAM。
·Azure SQL Edge 的硬件要求。
拉取并運(yùn)行容器映像
在開(kāi)始執(zhí)行以下步驟之前,請(qǐng)確保已在本文頂部選擇了首選的 shell(bash、PowerShell 或 cmd)。
1.從 Microsoft 容器注冊(cè)表中拉取 Azure SQL Edge 容器映像。
·拉取 Azure SQL Edge 容器映像
Bash
sudo docker pull mcr.microsoft.com/azure-sql-edge:latest
備注
對(duì)于本文中的 bash 命令,將使用 sudo。 在 macOS 和 windows 上,可能不需要 sudo。 在 Linux 上,如果不想使用 sudo 來(lái)運(yùn)行 Docker,可以配置一個(gè) docker 組,并將用戶添加到該組。 有關(guān)詳細(xì)信息,請(qǐng)參閱 Post-installation steps for Linux(適用于 Linux 的安裝后步驟)。
前面的命令將拉取最新的 Azure SQL Edge 容器映像。 若要查看所有可用映像,請(qǐng)參閱 azure-sql-egde Docker 中心頁(yè)。
2.要使用 Docker 運(yùn)行容器映像,可以從 Bash Shell (Linux/macOS) 或提升的 PowerShell 命令提示符使用以下命令。
·啟動(dòng)作為開(kāi)發(fā)人員版運(yùn)行的 Azure SQL Edge 實(shí)例
Bash
sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
·啟動(dòng)作為高級(jí)版運(yùn)行的 Azure SQL Edge 實(shí)例
Bash
sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -e 'MSSQL_PID=Premium' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
備注
如果要在 Windows 上使用 PowerShell 運(yùn)行這些命令,請(qǐng)使用雙引號(hào)而不是單引號(hào)。
備注
密碼應(yīng)符合 Microsoft SQL 數(shù)據(jù)庫(kù)引擎默認(rèn)密碼策略,否則容器無(wú)法設(shè)置 SQL 引擎,將停止工作。 默認(rèn)情況下,密碼的長(zhǎng)度必須至少為 8 個(gè)字符,并且必須包含以下四種字符中的三種:大寫(xiě)字母、小寫(xiě)字母、十進(jìn)制數(shù)字和符號(hào)。 你可以通過(guò)執(zhí)行 docker logs 命令檢查錯(cuò)誤日志。
下表對(duì)前一個(gè) docker run 示例中的參數(shù)進(jìn)行了說(shuō)明:
有關(guān)所有 Azure SQL Edge 環(huán)境變量的完整列表,請(qǐng)參閱使用環(huán)境變量配置 Azure SQL Edge。你還可以使用 mssql.conf 文件配置 Azure SQL Edge 容器。
3.要查看 Docker 容器,請(qǐng)使用 docker ps 命令。
Bash
sudo docker ps -a
4.如果“狀態(tài)”列顯示“正常運(yùn)行”狀態(tài),表明 Azure SQL Edge 正在容器中運(yùn)行,且正在偵聽(tīng)“端口”列中指定的端口 。 如果 Azure SQL Edge 容器的“狀態(tài)”列顯示“已退出”,請(qǐng)參閱 Azure SQL Edge 文檔的疑難解答部分 。
-h(主機(jī)名)參數(shù)也非常有用,但為了簡(jiǎn)單起見(jiàn),本教程中不使用它。 這會(huì)將容器的內(nèi)部名稱更改為一個(gè)自定義值。 也就是以下 Transact-SQL 查詢中返回的名稱:
SQL
SELECT @@SERVERNAME,
SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
SERVERPROPERTY('MachineName'),
SERVERPROPERTY('ServerName')
將 -h 和 --name 設(shè)為相同的值是一種很好的方法,可以輕松地識(shí)別目標(biāo)容器。
5.最后一步,更改 SA 密碼,因?yàn)?SA_PASSWORD 在 ps -eax 輸出中可見(jiàn),并存儲(chǔ)在同名的環(huán)境變量中。 請(qǐng)參閱以下步驟。
更改 SA 密碼
SA 帳戶是安裝過(guò)程中創(chuàng)建的 Azure SQL Edge 實(shí)例上的系統(tǒng)管理員。 創(chuàng)建 Azure SQL Edge 容器后,通過(guò)在容器中運(yùn)行 echo $SA_PASSWORD,可發(fā)現(xiàn)指定的 MSSQL_SA_PASSWORD 環(huán)境變量。 出于安全考慮,請(qǐng)考慮更改 SA 密碼。
1.選擇 SA 用戶要使用的強(qiáng)密碼。
2.使用 docker exec 運(yùn)行sqlcmd,以使用 Transact-SQL 更改密碼。 在下面的示例中,將舊密碼 <YourStrong!Passw0rd> 和新密碼 <YourNewStrong!Passw0rd> 替換為你自己的密碼值。
Bash
sudo docker exec -it azuresqledge /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P "<YourStrong@Passw0rd>" \
-Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong@Passw0rd>"'
連接到 Azure SQL Edge
下列步驟在容器內(nèi)部使用 Azure SQL Edge 命令行工具 sqlcmd 來(lái)連接 Azure SQL Edge。
備注
sqlcmd 工具在 ARM64 版的 SQL Edge 容器中不提供。
1.使用 docker exec -it 命令在運(yùn)行的容器內(nèi)部啟動(dòng)交互式 Bash Shell。 在下面的示例中,azuresqledge 是在創(chuàng)建容器時(shí)由 --name 參數(shù)指定的名稱。
Bash
sudo docker exec -it azuresqledge "bash"
2.在容器內(nèi)部使用 sqlcmd 進(jìn)行本地連接。 默認(rèn)情況下,sqlcmd 不在路徑之中,因此需要指定完整路徑。
Bash
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
提示
可以省略命令行上提示要輸入的密碼。
3.如果成功,應(yīng)會(huì)顯示 sqlcmd 命令提示符:1>。
創(chuàng)建和查詢數(shù)據(jù)
以下部分將引導(dǎo)你使用 sqlcmd 和 Transact-SQL 完成新建數(shù)據(jù)庫(kù)、添加數(shù)據(jù)并運(yùn)行簡(jiǎn)單查詢的整個(gè)過(guò)程。
新建數(shù)據(jù)庫(kù)
以下步驟創(chuàng)建一個(gè)名為 TestDB 的新數(shù)據(jù)庫(kù)。
1.在 sqlcmd 命令提示符中,粘貼以下 Transact-SQL 命令以創(chuàng)建測(cè)試數(shù)據(jù)庫(kù):
SQL
CREATE DATABASE TestDB
Go
2.在下一行中,編寫(xiě)一個(gè)查詢以返回服務(wù)器上所有數(shù)據(jù)庫(kù)的名稱:
SQL
SELECT Name from sys.Databases
Go
插入數(shù)據(jù)
接下來(lái)創(chuàng)建一個(gè)新表 Inventory,然后插入兩個(gè)新行。
1.在 sqlcmd 命令提示符中,將上下文切換到新的 TestDB 數(shù)據(jù)庫(kù):
SQL
USE TestDB
2.創(chuàng)建名為 Inventory 的新表:
SQL
CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
3.將數(shù)據(jù)插入新表:
SQL
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
4.要執(zhí)行上述命令的類型 GO:
SQL
GO
選擇數(shù)據(jù)
現(xiàn)在,運(yùn)行查詢以從 Inventory 表返回?cái)?shù)據(jù)。
1.通過(guò) sqlcmd 命令提示符輸入查詢,以返回 Inventory 表中數(shù)量大于 152 的行:
SQL
SELECT * FROM Inventory WHERE quantity > 152;
2.執(zhí)行此命令:
SQL
GO
退出 sqlcmd 命令提示符
1.要結(jié)束 sqlcmd 會(huì)話,請(qǐng)鍵入 QUIT:
SQL
QUIT
2.要在容器中退出交互式命令提示,請(qǐng)鍵入 exit。 退出交互式 Bash Shell 后,容器將繼續(xù)運(yùn)行。
從容器外連接
還可以從支持 SQL 連接的任何 Linux、Windows 或 macOS 外部工具連接到 Docker 計(jì)算機(jī)上的 Azure SQL Edge 實(shí)例。 有關(guān)從外部連接到 SQL Edge 容器的詳細(xì)信息,請(qǐng)參閱連接和查詢 Azure SQL Edge。
刪除容器
如果想刪除本教程中使用的 Azure SQL Edge 容器,請(qǐng)運(yùn)行以下命令:
Bash
sudo docker stop azuresqledge
sudo docker rm azuresqledge
警告
停止并刪除容器會(huì)永久刪除容器中的所有 Azure SQL Edge 數(shù)據(jù)。 如果你需要保留數(shù)據(jù),請(qǐng)?jiān)谌萜魍鈩?chuàng)建并復(fù)制備份文件或使用容器數(shù)據(jù)暫留技術(shù)。