sql-server-samples:在 Windows 上用 Ruby 通过 TinyTDS 驱动连接 Azure SQL Database 的 CRUD 实战

发布时间:2026/9/25 3:12:54
sql-server-samples:在 Windows 上用 Ruby 通过 TinyTDS 驱动连接 Azure SQL Database 的 CRUD 实战 示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载本篇以 sql-server-samples 仓库中 Windows 版 Ruby 连接样例 为主体完整讲解在 Windows 客户端上搭建 Ruby 运行环境RubyInstaller、DevKit、TinyTDS gem并连接 Azure SQL Database 的全过程并逐行剖析配套源码 sample_ruby_win.rb 中的连接、SELECT、会话配置与 INSERT ... OUTPUT 写法。读完后你可以按文档步骤独立复现样例运行并理解使用 TinyTDS 访问 Azure SQL 时必须设置的八条 ANSI 会话选项及其原因。样例定位一份 Windows 端的 Ruby CRUD 连接教程该样例属于仓库 Ruby 教程系列samples/tutorials/ruby中面向 Windows 操作系统的部分官方 README 明确了它的基本属性适用对象Applies toSQL Server 2016或更高版本、Azure SQL Database、Azure SQL Data Warehouse工作负载WorkloadCRUD增删改查中的读取与写入编程语言Ruby样例作者Andrea Lam。样例目录结构非常精简仅含文档与源码两个文件samples/tutorials/ruby/windows/README.md本指南环境准备、运行步骤、TinyTDS 使用注意事项samples/tutorials/ruby/windows/sample_ruby_win.rb实际执行的 Ruby 脚本。同系列还有 Linuxsample_ruby_linux.rb与 macOSsample_ruby_mac.rb两个版本三者的业务逻辑代码完全一致差异仅在于各平台的环境搭建方式本文聚焦 Windows 版跨平台差异会在文末单独对比。软件前置条件在 Windows 上安装 Ruby、DevKit 与 tiny_tds按照 README 的“Before you begin”部分Windows 客户端需要准备三项软件组件。1. 安装 RubyRubyInstaller 2.1.x从 RubyInstaller 官方下载页获取对应架构的 2.1.x 安装包例如 64 位机器选择 Ruby 2.1.6 (x64)双击启动安装程序选择语言并同意条款。关键的安装设置项有两个复选框务必都勾选Add Ruby executables to your PATH将 ruby 可执行文件加入系统 PATH否则后续无法直接用ruby命令Associate .rb and .rbw files with this Ruby installation将 .rb / .rbw 文件关联到本 Ruby 安装便于直接双击运行脚本。2. 安装并初始化 DevKitDevKit 是 RubyInstaller 的配套开发工具包为编译原生扩展如 TinyTDS 这类包含 C 代码的 gem提供 MSVC 构建环境从 RubyInstaller 下载页下载 DevKit双击压缩包选择解压位置点击 ... 按钮选择C:\DevKit该文件夹通常需要先点击 “Make New Folder” 手动创建点击 “OK” 和 “Extract” 完成解压打开命令提示符Command Prompt依次执行chdir C:\DevKit ruby dk.rb init ruby dk.rb install其中dk.rb init用于让 DevKit 识别已安装的 Ruby 解释器dk.rb install则把 DevKit 与所识别的 Ruby 建立关联。3. 安装 tiny_tds gemTinyTDS 是 Ruby 生态中基于 FreeTDS 库的轻量级 SQL Server 驱动gem 名为tiny_tds。进入C:\DevKit目录后在终端执行gem inst tiny_tds --preREADME 特意使用--pre参数安装预发布版本这是该样例时代针对 Azure SQL Database 兼容性给出的安装方式。Azure 侧前置条件准备 AdventureWorks 样例数据库该 Ruby 样例依赖 AdventureWorks 样例数据库——脚本中查询的SalesLT.Customer表与写入的SalesLT.Product表均来自 AdventureWorks 的SalesLTSales Light轻量级模式。如果账号下还没有 AdventureWorks按 Azure SQL Database 的标准流程创建即可仓库内 samples/databases/adventure-works 目录下还附带了完整的 AdventureWorks OLTP 安装脚本instawdb.sql与数据 CSV 文件其中的instawdb.sql就定义了SalesLT.Product、SalesLT.Customer等表结构SellStartDate等列名可在其中检索验证可直接用于在自建 SQL Server 上复现同一套样例。运行样例修改连接串并执行脚本运行步骤共两步README “Run this sample” 部分在命令提示符中打开 sample_ruby_win.rb将连接串中的用户名、密码、主机名替换为自己的凭据见下一节对连接串各字段的说明在终端执行ruby sample_ruby_win.rb源码剖析sample_ruby_win.rb 的完整执行流程下面结合源码逐段说明该脚本做了什么以下行号均指向 sample_ruby_win.rb。建立连接TinyTds::Client 的五个连接参数#Using the TinyTDS driver require tiny_tds require date #Connect to your database. #Replace server name, username, and password with your credentials client TinyTds::Client.new username: usernameservername, password: password, host: servername, port: 1433, database: databasenamesample_ruby_win.rbTinyTds::Client.new接收五个关键字参数与 Azure SQL Database 的 SQL 身份认证模型一一对应参数示例值含义usernameusernameservernameSQL 登录名格式为用户服务器这是 Azure SQL Database 使用 SQL 身份认证的标准写法passwordpassword登录密码hostservername逻辑服务器地址Azure SQL 上即servername.database.chinacloudapi.cn形式的全限定域名port1433TDS 协议默认端口Azure SQL Database 固定使用该端口databasedatabasename目标数据库名本例为 AdventureWorks 对应的库注意源码顶部#Replace server name, username, and password with your credentials的注释提示usernameservername、password、servername、databasename均为占位符运行前必须替换。SELECT读取 SalesLT.Customer 前十行#SELECT #Execute a simple select statement. results client.execute(SELECT TOP 10 Title, FirstName, LastName from SalesLT.Customer) #Print results of select. results.each do |row| puts row endsample_ruby_win.rbclient.execute是 TinyTDS 的核心执行入口返回一个可逐行遍历的结果集。这里执行SELECT TOP 10 Title, FirstName, LastName FROM SalesLT.Customer读取 AdventureWorks 客户表的前 10 条记录并以哈希形式打印每一行用于验证连接与读路径正常。先设置会话选项再执行 INSERT#INSERT #Make sure you have followed the recommended settings for using TinyTDS with Azure results client.execute(SET ANSI_NULLS ON) results client.execute(SET CURSOR_CLOSE_ON_COMMIT OFF) results client.execute(SET ANSI_NULL_DFLT_ON ON) results client.execute(SET IMPLICIT_TRANSACTIONS OFF) results client.execute(SET ANSI_PADDING ON) results client.execute(SET QUOTED_IDENTIFIER ON) results client.execute(SET ANSI_WARNINGS ON) results client.execute(SET CONCAT_NULL_YIELDS_NULL ON)sample_ruby_win.rbREADME 中“Additional notes for using TinyTDS with Azure”一节明确建议使用 TinyTDS 连接 Azure 时应预先设置如下八条会话选项这也是脚本中这 8 行代码的由来SET ANSI_NULLS ON SET CURSOR_CLOSE_ON_COMMIT OFF SET ANSI_NULL_DFLT_ON ON SET IMPLICIT_TRANSACTIONS OFF SET ANSI_PADDING ON SET QUOTED_IDENTIFIER ON SET ANSI_WARNINGS ON SET CONCAT_NULL_YIELDS_NULL ON这些选项统一了 TDS 驱动的 ANSI 语义与 SQL Server 的默认行为例如ANSI_NULLS决定 NULL 比较语义、ANSI_PADDING决定定长字符列是否补齐、QUOTED_IDENTIFIER决定括号标识符的解析方式等是 FreeTDS 系驱动访问 Azure SQL 的推荐实践。在代码层面即“在执行查询之前逐条client.execute这些 SET 语句”。需要指出一个文档与源码的细微差异README 中给出的 Ruby 示例片段里client.execute(SET QUOTED_IDENTIFIER ON)多了一个引号笔误而同系列的 Linux 版 sample_ruby_linux.rb 与 Windows 版源码均写为正确的client.execute(SET QUOTED_IDENTIFIER ON)。以源码文件中的写法为准即可。日期格式化与 INSERT ... OUTPUT 回插主键#Configure date format to align with SQL Server datetime format t Time.now curr_date t.strftime(%Y-%m-%d %H:%M:%S.%L) #Execute an insert statement results client.execute(INSERT SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) OUTPUT INSERTED.ProductID VALUES (SQL Server Express New, SQLEXPRESS New, 0, 0, #{curr_date} )) #Print the ID of the inserted row. results.each do |row| puts row endsample_ruby_win.rb这段写入了三个值得注意的细节日期格式对齐用 Ruby 的strftime(%Y-%m-%d %H:%M:%S.%L)把当前时间格式化为YYYY-MM-DD HH:MM:SS.mmm正好是 SQL Serverdatetime类型的标准字面量格式含毫秒避免依赖隐式转换INSERT ... OUTPUT语句尾部OUTPUT INSERTED.ProductID让 INSERT 直接把新行自增生成的ProductID作为结果集返回脚本随后遍历打印——这是不回读数据库、直接获取插入主键的惯用手法目标列插入SalesLT.Product的Name、ProductNumber、StandardCost、ListPrice、SellStartDate五列列结构与 AdventureWorks 安装脚本 instawdb.sql 中的表定义一致。综合来看整个样例完成的就是 README “Sample details” 所概括的行为连接 AdventureWorks 数据库执行一条 SELECT 和一条 INSERT验证 TinyTDS 在 Windows 上对 Azure SQL 的完整 CRUD读写链路。跨平台对照同一样例在 Linux / macOS 上只换环境Windows 版独有的复杂度在于 DevKitC 编译器工具链的搭建。对照同目录下的 Linux 版 README 与 macOS 版 README可看出各平台前置条件的差异平台Ruby 获取方式FreeTDS 来源tiny_tds 安装Windows本文RubyInstaller 2.1.xx64 DevKit由 tiny_tds gem 携带gem inst tiny_tds --preUbuntu LinuxRVMrvm install 2.3.1sudo apt-get install freetds-dev freetds-bingem install tiny_tdsmacOS系统自带 / Homebrew 环境brew install FreeTDSgem install tiny_tds三端的业务脚本SELECT、八条 SET、日期格式化、INSERT ... OUTPUT逐行相同说明该样例的数据库逻辑与平台无关可整体迁移运行命令仅文件名不同ruby sample_ruby_win.rb/ruby sample_ruby_linux.rb/ruby sample_ruby_mac.rb。免责声明按原文档 Disclaimers 部分本脚本与本指南版权归 Microsoft Corporation仅作为样例提供不属于任何 Azure 服务不受任何 SLA 或其他 Azure 相关协议约束按“现状”提供、不附带明示或默示担保使用脚本前请先自行熟悉其内容。参考文件Windows 样例指南本文主体文档samples/tutorials/ruby/windows/README.mdWindows 样例源码samples/tutorials/ruby/windows/sample_ruby_win.rbRuby 教程系列总览samples/tutorials/ruby/README.mdLinux 对照样例samples/tutorials/ruby/linux/README.md、samples/tutorials/ruby/linux/sample_ruby_linux.rbmacOS 对照样例samples/tutorials/ruby/mac/README.md、samples/tutorials/ruby/mac/sample_ruby_mac.rbAdventureWorks OLTP 安装脚本样例所依赖的表结构来源samples/databases/adventure-works/oltp-install-script/instawdb.sql赞分享示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载相关推荐使用 Ruby (TinyTDS) 在 Ubuntu Linux 上连接 SQL Server 与 Azure SQL Database 实战指南使用 Ruby TinyTDS 在 Ubuntu Linux 上连接 SQL Server 与 Azure SQL Database 实战指南 本指南基于 sq示例工程数据库教程后端sql-server-samples在 macOS 上用 Ruby 连接 Azure SQL 数据库 —— TinyTDS 样例实战解析sql server samples在 macOS 上用 Ruby 连接 Azure SQL 数据库 —— TinyTDS 样例实战解析 本文基于官方样例库示例工程数据库教程后端使用 T-SQL 自动生成 JSON CRUD 存储过程sql-server-samples code-generator 实战指南使用 T SQL 自动生成 JSON CRUD 存储过程sql server samples code generator 实战指南 本文围绕 sql ser示例工程数据库教程后端上一篇1Fichier Download Manager 实战指南从入门到精通下一篇Bootbox.js插件开发如何扩展自定义对话框功能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考