日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Serverless 解惑——函数计算如何访问 SQL Server 数据库

發(fā)布時(shí)間:2025/3/20 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Serverless 解惑——函数计算如何访问 SQL Server 数据库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

函數(shù)計(jì)算(Function Compute):函數(shù)計(jì)算 是事件驅(qū)動(dòng)的全托管計(jì)算服務(wù)。使用函數(shù)計(jì)算,您無需采購(gòu)與管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫并上傳代碼。函數(shù)計(jì)算為您準(zhǔn)備好計(jì)算資源,彈性地可靠地運(yùn)行任務(wù),并提供日志查詢、性能監(jiān)控和報(bào)警等功能。借助函數(shù)計(jì)算,您可以快速構(gòu)建任何類型的應(yīng)用和服務(wù),并且只需為任務(wù)實(shí)際消耗的資源付費(fèi)。

訪問 SQL Server 數(shù)據(jù)庫(kù)是指在函數(shù)計(jì)算中通過編寫代碼調(diào)用數(shù)據(jù)庫(kù)驅(qū)動(dòng)庫(kù)通過 TCP 協(xié)議實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)進(jìn)行的插入、查詢等操作。通常函數(shù)計(jì)算中運(yùn)行的不同函數(shù)實(shí)例之間是不共享狀態(tài)的,對(duì)于結(jié)構(gòu)化的數(shù)據(jù)可以通過數(shù)據(jù)庫(kù)的形式進(jìn)行持久化以實(shí)現(xiàn)狀態(tài)共享。由于用戶函數(shù)運(yùn)行在函數(shù)計(jì)算的 VPC 中,而用戶的數(shù)據(jù)庫(kù)運(yùn)行在用戶所屬的 VPC 中,所以在函數(shù)計(jì)算平臺(tái)訪問數(shù)據(jù)庫(kù)會(huì)涉及到跨 VPC 訪問的場(chǎng)景,下面我們先來介紹一下其工作機(jī)制。

工作機(jī)制

訪問 SQL Server 的原理、工作機(jī)制與訪問 Mysql 數(shù)據(jù)庫(kù)完全相同,本文不再重復(fù)闡述,更詳細(xì)的內(nèi)容請(qǐng)參考 訪問 Mysql 數(shù)據(jù)庫(kù) 中的工作機(jī)制章節(jié)。

配置與函數(shù)編寫

公共配置

創(chuàng)建專有網(wǎng)絡(luò)VPC

  • 登錄 VPC控制臺(tái)。
  • 參閱 VPC 搭建專有網(wǎng)絡(luò) 創(chuàng)建VPC和交換機(jī)。
  • 創(chuàng)建安全組

    在安全組控制臺(tái) 新建安全組,點(diǎn)擊 創(chuàng)建安全組,設(shè)置安全組名稱,網(wǎng)絡(luò)類型選擇 專有網(wǎng)絡(luò),并選擇剛才創(chuàng)建的專有網(wǎng)絡(luò)。

    創(chuàng)建與配置 SQL Server 實(shí)例

  • 創(chuàng)建適合業(yè)務(wù)需求的云數(shù)據(jù)庫(kù) SQL Server 版實(shí)例可以參考 云數(shù)據(jù)庫(kù) SQL Server 版。
  • 注意:創(chuàng)建云數(shù)據(jù)庫(kù) SQL Server 版實(shí)例需要選擇和函數(shù)計(jì)算配置相同的 VPC 實(shí)例,可以配置和函數(shù)計(jì)算不同的可用區(qū)的交換機(jī),因?yàn)橄嗤?VPC 實(shí)例下不同可用區(qū)交換機(jī)內(nèi)網(wǎng)是互通的。

  • 創(chuàng)建成功后,在實(shí)例信息頁(yè)面左側(cè)的導(dǎo)航欄中單擊數(shù)據(jù)安全性

  • 單擊 添加白名單分組

  • 在彈出的對(duì)話框中,將函數(shù)計(jì)算所在的 VPC 網(wǎng)絡(luò)的網(wǎng)段地址配置在白名單輸入框中。

  • 登錄 VPC 控制臺(tái),在專有網(wǎng)絡(luò)列表中找到應(yīng)用所在的 VPC,單擊該 VPC 的名稱進(jìn)入專有網(wǎng)絡(luò)詳情頁(yè)面。
  • 復(fù)制應(yīng)用所在的 VPC 的 IPv4 網(wǎng)段
  • 組內(nèi)白名單設(shè)置框中粘貼該 VPC 的 IPv4 網(wǎng)段地址,然后單擊確定
  • 最后訪問 SQL Server 數(shù)據(jù)庫(kù) host 為實(shí)例的內(nèi)網(wǎng)地址,可以登錄阿里云控制臺(tái)查看:

  • 函數(shù)計(jì)算配置 VPC

    注意:函數(shù)計(jì)算服務(wù)所在區(qū)域與公共配置中創(chuàng)建的資源所在區(qū)域一致。

  • 在 函數(shù)計(jì)算控制臺(tái) 創(chuàng)建服務(wù)。
    • 創(chuàng)建服務(wù)步驟請(qǐng)參考文章 服務(wù)的增刪改查
  • 【專有網(wǎng)絡(luò)配置】選項(xiàng)中,選擇您在步驟一中創(chuàng)建的 VPC 網(wǎng)絡(luò),交換機(jī)、安全組。
  • 【權(quán)限配置】選項(xiàng)中,選擇【新建角色】,點(diǎn)擊【點(diǎn)擊授權(quán)】,在角色快速創(chuàng)建頁(yè)面,點(diǎn)擊【同意授權(quán)】。
    • 這步的操作是授予函數(shù)計(jì)算對(duì) ENI 的操作權(quán)限,函數(shù)計(jì)算訪問 VPC 中資源需要的權(quán)限請(qǐng)參考文章 配置函數(shù)計(jì)算訪問 VPC 內(nèi)的資源
  • 點(diǎn)擊確定,新建服務(wù)完畢。
  • ###函數(shù)編寫與調(diào)試
    下面演示 Python3 與 php7.2 開發(fā)語(yǔ)言訪問 SQL Server 數(shù)據(jù)庫(kù)函數(shù)示例創(chuàng)建:

    使用 Fun 工具在建立存放代碼和依賴模塊目錄下安裝依賴和項(xiàng)目部署。

    Python3

  • 建立一個(gè)目錄,用于存放代碼和依賴模塊,在該目錄下新建 template.yml 文件,例如 /tmp/code/template.yml,內(nèi)容為:
  • ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources:SQL-Server-test:Type: 'Aliyun::Serverless::Service'Properties:Description: This is SQL-Server serviceRole: 'acs:ram::xxxxx:role/fc-public-test'LogConfig:Project: xxxLogstore: xxxVpcConfig:VpcId: vpc-xxxVSwitchIds:- vsw-xxxSecurityGroupId: sg-xxxInternetAccess: truepython-test:Type: 'Aliyun::Serverless::Function'Properties:Handler: 'index.handler'Runtime: python3Timeout: 10MemorySize: 128CodeUri: './'
  • 在該目錄下創(chuàng)建 Funfile 文件內(nèi)容為:

    RUNTIME python3 RUN fun-install pip install pymssql
  • 執(zhí)行fun install命令安裝依賴:

    $ fun install using template: template.yml start installing function dependencies without docker 安裝過程。。。。 Install Success
  • 在函數(shù)根目錄下新建代碼文件,例如 /tmp/code/index.py:

    # -*- coding: utf-8 -*- import pymssql def handler(event, context):conn = pymssql.connect(host='rm-xxx.sqlserver.rds.aliyuncs.com',user='xxx,password='xxx',database='xxx',charset='utf8')cursor = conn.cursor()cursor.execute('SELECT * FROM inventory WHERE quantity > 152')result = ''for row in cursor:result += 'row = %r\n' % (row,)conn.close()return result
  • 使用 fun 工具部署:

    $ fun deploy using template: template.yml using region: cn-hangzhou using accountId: ***********3743 using accessKeyId: ***********Ptgk using timeout: 60部署過程。。。function python-test deploy success service SQL-Server-test deploy success
  • 登錄控制臺(tái),即可看到相關(guān)的服務(wù)、函數(shù)被創(chuàng)建成功,且觸發(fā)執(zhí)行可以返回正確的結(jié)果。

    PHP7.2

  • 建立一個(gè)目錄,用于存放代碼和依賴模塊,在該目錄下新建 template.yml 文件,例如 /tmp/code/template.yml,內(nèi)容為:

    ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources:SQL-Server-test:Type: 'Aliyun::Serverless::Service'Properties:Description: This is SQL-Server serviceRole: 'acs:ram::xxx:role/fc-public-test'LogConfig:Project: xxxLogstore: xxxVpcConfig:VpcId: vpc-xxxVSwitchIds:- vsw-x'x'x'xSecurityGroupId: sg-xxxInternetAccess: truephp-test:Type: 'Aliyun::Serverless::Function'Properties:Handler: 'index.handler'Runtime: php7.2Timeout: 10MemorySize: 128CodeUri: './'EnvironmentVariables:ODBCINI: /code/.fun/root/etc/odbc.iniODBCSYSINI: /code/.fun/root/opt/microsoft/msodbcsql17/etc
  • 在該目錄下創(chuàng)建 Funfile 文件內(nèi)容為:

    RUNTIME php7.2 RUN apt-get update && apt-get install -y apt-transport-https apt-utils RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list RUN fun-install apt-get install unixodbc-dev RUN fun-install apt-get install msodbcsql17
  • 執(zhí)行fun install命令安裝依賴:

    $ fun install using template: template.yml start installing function dependencies without docker 安裝過程。。。。 Install Success
  • 在函數(shù)根目錄下新建代碼文件,例如 /tmp/code/index.php:

    <?php function handler($event, $context) {try {$conn = new PDO("sqlsrv:Server=rm-xxx.sqlserver.rds.aliyuncs.com;Database=xxx","xxx","xxx");// set the PDO error mode to exception$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);$conn->query("set names utf-8");$sql="SELECT * FROM inventory WHERE quantity > 152";$result = $conn->prepare($sql);$result->execute();print($result);return ("Connection successed.");} catch (PDOException $e) {return ("Connection failed: " . $e->getMessage());} }
  • 使用 fun 工具部署:

    $ fun deploy using template: template.yml using region: cn-hangzhou using accountId: ***********3743 using accessKeyId: ***********Ptgk using timeout: 60部署過程。。。function php-test deploy success service SQL-Server-test deploy success
  • 登錄控制臺(tái),即可看到相關(guān)的服務(wù)、函數(shù)被創(chuàng)建成功,且觸發(fā)執(zhí)行可以返回正確的結(jié)果。

  • 注意事項(xiàng)
  • 創(chuàng)建的函數(shù)需要設(shè)置兩個(gè)環(huán)境變量:
    ODBCINI: /code/.fun/root/etc/odbc.ini
    ODBCSYSINI: /code/.fun/root/opt/microsoft/msodbcsql17/etc
  • 執(zhí)行fun install命令安裝依賴后,修改 .fun/root/etc/odbc.ini 文件中 Driver 值指向.fun/root/opt/microsoft/msodbcsql17/lib64/目錄下的文件,如圖!
  • php環(huán)境中需要使用 pdo_sqlsrv 擴(kuò)展編譯可以參考 函數(shù)計(jì)算 php runtime 編譯非內(nèi)置的擴(kuò)展 文檔最后可以下載已經(jīng)編譯好的 pdo_sqlsrv 擴(kuò)展。
  • 總結(jié)

    通過本文介紹可以快速實(shí)現(xiàn)函數(shù)計(jì)算訪問 SQL Server 數(shù)據(jù)庫(kù)。

    使用函數(shù)計(jì)算帶來的優(yōu)勢(shì):

  • 無需采購(gòu)和管理服務(wù)器等基礎(chǔ)設(shè)施,只需專注業(yè)務(wù)邏輯的開發(fā),可以大幅縮短項(xiàng)目交付時(shí)間和人力成本;
  • 提供日志查詢、性能監(jiān)控、報(bào)警等功能快速排查故障;
  • 免運(yùn)維,毫秒級(jí)別彈性伸縮,快速實(shí)現(xiàn)底層擴(kuò)容以應(yīng)對(duì)峰值壓力,性能優(yōu)異;
  • 成本極具競(jìng)爭(zhēng)力;
  • 加入我們

    團(tuán)隊(duì)介紹

    阿里云函數(shù)服務(wù)是一個(gè)全新的,支持事件驅(qū)動(dòng)編程模式的計(jì)算服務(wù)。 他幫助用戶聚焦自身業(yè)務(wù)邏輯,以 Serverless的方式構(gòu)建應(yīng)用,快速的實(shí)現(xiàn)低成本,可擴(kuò)展,高可用的系統(tǒng),而無需考慮服務(wù)器等底層基礎(chǔ)設(shè)施的管理。 用戶能夠快速的創(chuàng)建原型,同樣的架構(gòu)能隨業(yè)務(wù)規(guī)模平滑伸縮。讓計(jì)算變得更高效,更經(jīng)濟(jì),更彈性,更可靠。無論小型創(chuàng)業(yè)公司,還是大型企業(yè),都受益其中。我們的團(tuán)隊(duì)正在迅速擴(kuò)張,求賢若渴。我們想尋找這樣的隊(duì)友:
    基本功扎實(shí)。既能閱讀論文追蹤業(yè)界趨勢(shì),又能快速編碼解決實(shí)際問題。
    嚴(yán)謹(jǐn)?shù)?#xff0c;系統(tǒng)化的思維能力。既能整體考慮業(yè)務(wù)機(jī)會(huì),系統(tǒng)架構(gòu),運(yùn)維成本等諸多因素,又能掌控設(shè)計(jì)/開發(fā)/測(cè)試/發(fā)布的完整流程,預(yù)判并控制風(fēng)險(xiǎn)。
    好奇心和使命感驅(qū)動(dòng)。樂于探索未知領(lǐng)域,不僅是夢(mèng)想家,也是踐行者。
    堅(jiān)韌、樂觀、自信。能在壓力和困難中看到機(jī)會(huì),讓工作充滿樂趣!
    如果您對(duì)云計(jì)算充滿熱情,想要構(gòu)建一個(gè)有影響力計(jì)算平臺(tái)和生態(tài)體系,請(qǐng)加入我們,和我們一起實(shí)現(xiàn)夢(mèng)想!

    職位描述

    構(gòu)建新一代 Serverless 計(jì)算平臺(tái),包括:

  • 設(shè)計(jì)和實(shí)現(xiàn)完整可擴(kuò)展的前端系統(tǒng),包括身份驗(yàn)證/權(quán)限管理,元數(shù)據(jù)管理,流量控制,計(jì)量計(jì)費(fèi),日志監(jiān)控等等
  • 設(shè)計(jì)和實(shí)現(xiàn)彈性可靠的后端系統(tǒng),包括資源調(diào)度,負(fù)載均衡,容錯(cuò)處理等等
  • 豐富易用的 SDK/Tools/CLI/控制臺(tái)
  • 用戶需求驅(qū)動(dòng),追蹤業(yè)界趨勢(shì),利用技術(shù)推動(dòng)業(yè)務(wù)的成長(zhǎng)
  • 職位要求

  • 算法/數(shù)據(jù)結(jié)構(gòu)/操作系統(tǒng)等基礎(chǔ)知識(shí)扎實(shí),優(yōu)秀的邏輯思維能力。
  • 至少掌握一門編程語(yǔ)言。例如 Java/Go/C/C#/C++。
  • 有大規(guī)模、高可用分布式系統(tǒng)開發(fā)經(jīng)驗(yàn)者優(yōu)先。
  • 有 Web/Mobile Backends/Microservice 開發(fā)經(jīng)驗(yàn)者優(yōu)先。
  • 良好的溝通能力和團(tuán)隊(duì)合作精神,有一定的組織協(xié)調(diào)能力。
  • 本科及以上學(xué)歷
  • 3 年以上工作經(jīng)驗(yàn)
    通過“阿里巴巴編碼規(guī)范” 認(rèn)證的同學(xué)優(yōu)先錄取,認(rèn)證地址:https://edu.aliyun.com/certification/cldt02
  • 簡(jiǎn)歷提交

    yixian.dw AT alibaba-inc.com

    “阿里巴巴云原生技術(shù)圈關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開發(fā)者的技術(shù)圈。”

    總結(jié)

    以上是生活随笔為你收集整理的Serverless 解惑——函数计算如何访问 SQL Server 数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。