)
示例工程數(shù)據庫教程后端【免費下載鏈接】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 運行環(huán)境RubyInstaller、DevKit、TinyTDS gem并連接 Azure SQL Database 的全過程并逐行剖析配套源碼 sample_ruby_win.rb 中的連接、SELECT、會話配置與 INSERT ... OUTPUT 寫法。讀完后你可以按文檔步驟獨立復現(xiàn)樣例運行并理解使用 TinyTDS 訪問 Azure SQL 時必須設置的八條 ANSI 會話選項及其原因。樣例定位一份 Windows 端的 Ruby CRUD 連接教程該樣例屬于倉庫 Ruby 教程系列samples/tutorials/ruby中面向 Windows 操作系統(tǒng)的部分官方 README 明確了它的基本屬性適用對象Applies toSQL Server 2016或更高版本、Azure SQL Database、Azure SQL Data Warehouse工作負載WorkloadCRUD增刪改查中的讀取與寫入編程語言Ruby樣例作者Andrea Lam。樣例目錄結構非常精簡僅含文檔與源碼兩個文件samples/tutorials/ruby/windows/README.md本指南環(huán)境準備、運行步驟、TinyTDS 使用注意事項samples/tutorials/ruby/windows/sample_ruby_win.rb實際執(zhí)行的 Ruby 腳本。同系列還有 Linuxsample_ruby_linux.rb與 macOSsample_ruby_mac.rb兩個版本三者的業(yè)務邏輯代碼完全一致差異僅在于各平臺的環(huán)境搭建方式本文聚焦 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 可執(zhí)行文件加入系統(tǒng) PATH否則后續(xù)無法直接用ruby命令Associate .rb and .rbw files with this Ruby installation將 .rb / .rbw 文件關聯(lián)到本 Ruby 安裝便于直接雙擊運行腳本。2. 安裝并初始化 DevKitDevKit 是 RubyInstaller 的配套開發(fā)工具包為編譯原生擴展如 TinyTDS 這類包含 C 代碼的 gem提供 MSVC 構建環(huán)境從 RubyInstaller 下載頁下載 DevKit雙擊壓縮包選擇解壓位置點擊 ... 按鈕選擇C:\DevKit該文件夾通常需要先點擊 “Make New Folder” 手動創(chuàng)建點擊 “OK” 和 “Extract” 完成解壓打開命令提示符Command Prompt依次執(zhí)行chdir C:\DevKit ruby dk.rb init ruby dk.rb install其中dk.rb init用于讓 DevKit 識別已安裝的 Ruby 解釋器dk.rb install則把 DevKit 與所識別的 Ruby 建立關聯(lián)。3. 安裝 tiny_tds gemTinyTDS 是 Ruby 生態(tài)中基于 FreeTDS 庫的輕量級 SQL Server 驅動gem 名為tiny_tds。進入C:\DevKit目錄后在終端執(zhí)行gem inst tiny_tds --preREADME 特意使用--pre參數(shù)安裝預發(fā)布版本這是該樣例時代針對 Azure SQL Database 兼容性給出的安裝方式。Azure 側前置條件準備 AdventureWorks 樣例數(shù)據庫該 Ruby 樣例依賴 AdventureWorks 樣例數(shù)據庫——腳本中查詢的SalesLT.Customer表與寫入的SalesLT.Product表均來自 AdventureWorks 的SalesLTSales Light輕量級模式。如果賬號下還沒有 AdventureWorks按 Azure SQL Database 的標準流程創(chuàng)建即可倉庫內 samples/databases/adventure-works 目錄下還附帶了完整的 AdventureWorks OLTP 安裝腳本instawdb.sql與數(shù)據 CSV 文件其中的instawdb.sql就定義了SalesLT.Product、SalesLT.Customer等表結構SellStartDate等列名可在其中檢索驗證可直接用于在自建 SQL Server 上復現(xiàn)同一套樣例。運行樣例修改連接串并執(zhí)行腳本運行步驟共兩步README “Run this sample” 部分在命令提示符中打開 sample_ruby_win.rb將連接串中的用戶名、密碼、主機名替換為自己的憑據見下一節(jié)對連接串各字段的說明在終端執(zhí)行ruby sample_ruby_win.rb源碼剖析sample_ruby_win.rb 的完整執(zhí)行流程下面結合源碼逐段說明該腳本做了什么以下行號均指向 sample_ruby_win.rb。建立連接TinyTds::Client 的五個連接參數(shù)#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接收五個關鍵字參數(shù)與 Azure SQL Database 的 SQL 身份認證模型一一對應參數(shù)示例值含義usernameusernameservernameSQL 登錄名格式為用戶服務器這是 Azure SQL Database 使用 SQL 身份認證的標準寫法passwordpassword登錄密碼hostservername邏輯服務器地址Azure SQL 上即servername.database.chinacloudapi.cn形式的全限定域名port1433TDS 協(xié)議默認端口Azure SQL Database 固定使用該端口databasedatabasename目標數(shù)據庫名本例為 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 的核心執(zhí)行入口返回一個可逐行遍歷的結果集。這里執(zhí)行SELECT TOP 10 Title, FirstName, LastName FROM SalesLT.Customer讀取 AdventureWorks 客戶表的前 10 條記錄并以哈希形式打印每一行用于驗證連接與讀路徑正常。先設置會話選項再執(zhí)行 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”一節(jié)明確建議使用 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這些選項統(tǒng)一了 TDS 驅動的 ANSI 語義與 SQL Server 的默認行為例如ANSI_NULLS決定 NULL 比較語義、ANSI_PADDING決定定長字符列是否補齊、QUOTED_IDENTIFIER決定括號標識符的解析方式等是 FreeTDS 系驅動訪問 Azure SQL 的推薦實踐。在代碼層面即“在執(zhí)行查詢之前逐條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這段寫入了三個值得注意的細節(jié)日期格式對齊用 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作為結果集返回腳本隨后遍歷打印——這是不回讀數(shù)據庫、直接獲取插入主鍵的慣用手法目標列插入SalesLT.Product的Name、ProductNumber、StandardCost、ListPrice、SellStartDate五列列結構與 AdventureWorks 安裝腳本 instawdb.sql 中的表定義一致。綜合來看整個樣例完成的就是 README “Sample details” 所概括的行為連接 AdventureWorks 數(shù)據庫執(zhí)行一條 SELECT 和一條 INSERT驗證 TinyTDS 在 Windows 上對 Azure SQL 的完整 CRUD讀寫鏈路。跨平臺對照同一樣例在 Linux / macOS 上只換環(huán)境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系統(tǒng)自帶 / Homebrew 環(huán)境brew install FreeTDSgem install tiny_tds三端的業(yè)務腳本SELECT、八條 SET、日期格式化、INSERT ... OUTPUT逐行相同說明該樣例的數(shù)據庫邏輯與平臺無關可整體遷移運行命令僅文件名不同ruby sample_ruby_win.rb/ruby sample_ruby_linux.rb/ruby sample_ruby_mac.rb。免責聲明按原文檔 Disclaimers 部分本腳本與本指南版權歸 Microsoft Corporation僅作為樣例提供不屬于任何 Azure 服務不受任何 SLA 或其他 Azure 相關協(xié)議約束按“現(xiàn)狀”提供、不附帶明示或默示擔保使用腳本前請先自行熟悉其內容。參考文件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贊分享示例工程數(shù)據庫教程后端【免費下載鏈接】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 實戰(zhàn)指南使用 Ruby TinyTDS 在 Ubuntu Linux 上連接 SQL Server 與 Azure SQL Database 實戰(zhàn)指南 本指南基于 sq示例工程數(shù)據庫教程后端sql-server-samples在 macOS 上用 Ruby 連接 Azure SQL 數(shù)據庫 —— TinyTDS 樣例實戰(zhàn)解析sql server samples在 macOS 上用 Ruby 連接 Azure SQL 數(shù)據庫 —— TinyTDS 樣例實戰(zhàn)解析 本文基于官方樣例庫示例工程數(shù)據庫教程后端使用 T-SQL 自動生成 JSON CRUD 存儲過程sql-server-samples code-generator 實戰(zhàn)指南使用 T SQL 自動生成 JSON CRUD 存儲過程sql server samples code generator 實戰(zhàn)指南 本文圍繞 sql ser示例工程數(shù)據庫教程后端上一篇1Fichier Download Manager 實戰(zhàn)指南從入門到精通下一篇Bootbox.js插件開發(fā)如何擴展自定義對話框功能創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考