ARM64架构下如何使用sqlcmd?——基于NVIDIA Jetson Orin Nano场景
ARM64架构SQL Edge容器中sqlcmd缺失的解决方案
问题背景
使用ARM64架构的NVIDIA Jetson Orin Nano作为IoT Edge设备,已成功部署SQL Edge模块,但容器内无预装sqlcmd工具,官方暂未提供ARM64版本的SQL客户端工具包。报错如下:
mssql@e0f0035b988c:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '
'
bash: /opt/mssql-tools/bin/sqlcmd: No such file or directory
以下是可行解决方案:
方案1:从宿主机连接SQL Edge容器
利用容器映射的1433端口,在Jetson Orin Nano宿主机上使用ARM64兼容的SQL客户端:
- 使用Python + pyodbc
- 安装依赖:
sudo apt install python3-pip unixodbc-dev - 安装pyodbc:
pip3 install pyodbc - 编写查询脚本(示例):
import pyodbc conn_str = 'DRIVER={ODBC Driver 18 for SQL Server};SERVER=localhost,1433;DATABASE=master;UID=SA;PWD=<你的密码>;Encrypt=no' with pyodbc.connect(conn_str) as conn: with conn.cursor() as cursor: cursor.execute("SELECT @@VERSION;") for row in cursor: print(row[0])
- 安装依赖:
- 使用Azure Data Studio(ARM64版本)
下载适配ARM64的Azure Data Studio安装包,通过图形界面直接连接容器内的SQL Edge服务。
方案2:在SQL Edge容器内手动编译sqlcmd
基于微软开源的mssql-tools源码,在ARM64容器内编译生成sqlcmd:
- 进入容器:
docker exec -it <你的SQL Edge容器ID/名称> bash - 安装编译依赖:
apt update && apt install -y git cmake build-essential libssl-dev libkrb5-dev - 克隆源码并编译:
git clone https://github.com/microsoft/mssql-tools.git cd mssql-tools && mkdir build && cd build cmake .. && make - 编译完成后,直接使用生成的sqlcmd:
./bin/sqlcmd -S localhost -U SA -P '<你的密码>'
方案3:使用容器内的.NET Runtime执行SQL查询
SQL Edge ARM64镜像自带.NET Runtime,可通过C#脚本执行SQL操作:
- 创建
QuerySql.cs文件:using System; using System.Data.SqlClient; class SqlQuery { static void Main() { var connString = "Server=localhost;User ID=SA;Password=<你的密码>;Database=master;TrustServerCertificate=True"; using (var conn = new SqlConnection(connString)) { conn.Open(); var query = "SELECT @@VERSION;"; using (var cmd = new SqlCommand(query, conn)) using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(reader[0]); } } } } } - 编译并运行:
dotnet build QuerySql.cs -o sqlquery dotnet sqlquery/QuerySql.dll
内容的提问来源于stack exchange,提问作者Hey Hello
相关产品推荐
相关产品推荐

