中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

函數計算如何訪問SQL Server數據庫

發布時間:2021-12-02 10:16:47 來源:億速云 閱讀:200 作者:柒染 欄目:云計算

本篇文章給大家分享的是有關函數計算如何訪問SQL Server數據庫,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

函數計算(Function Compute):函數計算 是事件驅動的全托管計算服務。使用函數計算,您無需采購與管理服務器等基礎設施,只需編寫并上傳代碼。函數計算為您準備好計算資源,彈性地可靠地運行任務,并提供日志查詢、性能監控和報警等功能。借助函數計算,您可以快速構建任何類型的應用和服務,并且只需為任務實際消耗的資源付費。

訪問 SQL Server 數據庫是指在函數計算中通過編寫代碼調用數據庫驅動庫通過 TCP 協議實現對數據庫進行的插入、查詢等操作。通常函數計算中運行的不同函數實例之間是不共享狀態的,對于結構化的數據可以通過數據庫的形式進行持久化以實現狀態共享。由于用戶函數運行在函數計算的 VPC 中,而用戶的數據庫運行在用戶所屬的 VPC 中,所以在函數計算平臺訪問數據庫會涉及到跨 VPC 訪問的場景,下面我們先來介紹一下其工作機制。

工作機制

訪問 SQL Server 的原理、工作機制與訪問 Mysql 數據庫完全相同,本文不再重復闡述,更詳細的內容請參考 訪問 Mysql 數據庫 中的工作機制章節。

配置與函數編寫

公共配置

創建專有網絡VPC
  1. 登錄 VPC控制臺。

  2. 參閱 VPC 搭建專有網絡 創建VPC和交換機。

創建安全組

在安全組控制臺 新建安全組,點擊 創建安全組,設置安全組名稱,網絡類型選擇 專有網絡,并選擇剛才創建的專有網絡。

創建與配置 SQL Server 實例
  1. 創建適合業務需求的云數據庫 SQL Server 版實例可以參考 云數據庫 SQL Server 版。

注意:創建云數據庫 SQL Server 版實例需要選擇和函數計算配置相同的 VPC 實例,可以配置和函數計算不同的可用區的交換機,因為相同的 VPC 實例下不同可用區交換機內網是互通的。

  1. 創建成功后,在實例信息頁面左側的導航欄中單擊數據安全性

  2. 單擊 添加白名單分組函數計算如何訪問SQL Server數據庫

  3. 在彈出的對話框中,將函數計算所在的 VPC 網絡的網段地址配置在白名單輸入框中。

    1. 登錄 VPC 控制臺,在專有網絡列表中找到應用所在的 VPC,單擊該 VPC 的名稱進入專有網絡詳情頁面。

    2. 復制應用所在的 VPC 的 IPv4 網段函數計算如何訪問SQL Server數據庫

    3. 組內白名單設置框中粘貼該 VPC 的 IPv4 網段地址,然后單擊確定函數計算如何訪問SQL Server數據庫

  4. 最后訪問 SQL Server 數據庫 host 為實例的內網地址,可以登錄阿里云控制臺查看:

    函數計算如何訪問SQL Server數據庫

函數計算配置 VPC

注意:函數計算服務所在區域與公共配置中創建的資源所在區域一致。

  1. 在 函數計算控制臺 創建服務。

    • 創建服務步驟請參考文章 服務的增刪改查

  2. 【專有網絡配置】選項中,選擇您在步驟一中創建的 VPC 網絡,交換機、安全組。

  3. 【權限配置】選項中,選擇【新建角色】,點擊【點擊授權】,在角色快速創建頁面,點擊【同意授權】。

    • 這步的操作是授予函數計算對 ENI 的操作權限,函數計算訪問 VPC 中資源需要的權限請參考文章 配置函數計算訪問 VPC 內的資源

  4. 點擊確定,新建服務完畢。

###函數編寫與調試 下面演示 Python3 與 php7.2 開發語言訪問 SQL Server 數據庫函數示例創建:

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

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

ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
	SQL-Server-test:
	  Type: 'Aliyun::Serverless::Service'
	  Properties:
		Description: This is SQL-Server service
		Role: 'acs:ram::xxxxx:role/fc-public-test'
		LogConfig:
		  Project: xxx
		  Logstore: xxx
		VpcConfig:
		  VpcId: vpc-xxx
		  VSwitchIds:
			- vsw-xxx
		  SecurityGroupId: sg-xxx
		InternetAccess: true
	  python-test:
		Type: 'Aliyun::Serverless::Function'
		Properties:
		  Handler: 'index.handler'
		  Runtime: python3
		  Timeout: 10
		  MemorySize: 128
		  CodeUri: './'
  1. 在該目錄下創建 Funfile 文件內容為:

    	RUNTIME python3
    	RUN fun-install pip install pymssql


  2. 執行fun install命令安裝依賴:

    	$ fun install
    	using template: template.yml
    	start installing function dependencies without docker
    	安裝過程。。。。
    	Install Success


  3. 在函數根目錄下新建代碼文件,例如 /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


  4. 使用 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


登錄控制臺,即可看到相關的服務、函數被創建成功,且觸發執行可以返回正確的結果。

PHP7.2
  1. 建立一個目錄,用于存放代碼和依賴模塊,在該目錄下新建 template.yml 文件,例如 /tmp/code/template.yml,內容為:

    	ROSTemplateFormatVersion: '2015-09-01'
    	Transform: 'Aliyun::Serverless-2018-04-03'
    	Resources:
    	  SQL-Server-test:
    		Type: 'Aliyun::Serverless::Service'
    		Properties:
    		  Description: This is SQL-Server service
    		  Role: 'acs:ram::xxx:role/fc-public-test'
    		  LogConfig:
    			Project: xxx
    			Logstore: xxx
    		  VpcConfig:
    			VpcId: vpc-xxx
    			VSwitchIds:
    			  - vsw-x'x'x'x
    			SecurityGroupId: sg-xxx
    		  InternetAccess: true
    		php-test:
    		  Type: 'Aliyun::Serverless::Function'
    		  Properties:
    			Handler: 'index.handler'
    			Runtime: php7.2
    			Timeout: 10
    			MemorySize: 128
    			CodeUri: './'
    			EnvironmentVariables:
    			  ODBCINI: /code/.fun/root/etc/odbc.ini
    			  ODBCSYSINI: /code/.fun/root/opt/microsoft/msodbcsql17/etc


  2. 在該目錄下創建 Funfile 文件內容為:

    	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


  3. 執行fun install命令安裝依賴:

    	$ fun install
    	using template: template.yml
    	start installing function dependencies without docker
    	安裝過程。。。。
    	Install Success


  4. 在函數根目錄下新建代碼文件,例如 /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());
    		}
    	}


  5. 使用 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


登錄控制臺,即可看到相關的服務、函數被創建成功,且觸發執行可以返回正確的結果。

  1. 注意事項

    1. 創建的函數需要設置兩個環境變量: ODBCINI: /code/.fun/root/etc/odbc.ini ODBCSYSINI: /code/.fun/root/opt/microsoft/msodbcsql17/etc

    2. 執行fun install命令安裝依賴后,修改 .fun/root/etc/odbc.ini 文件中 Driver 值指向.fun/root/opt/microsoft/msodbcsql17/lib64/目錄下的文件,如圖! 函數計算如何訪問SQL Server數據庫

    3. php環境中需要使用 pdo_sqlsrv 擴展編譯可以參考 函數計算 php runtime 編譯非內置的擴展 文檔最后可以下載已經編譯好的 pdo_sqlsrv 擴展。

通過本文介紹可以快速實現函數計算訪問 SQL Server 數據庫。

使用函數計算帶來的優勢:

  1. 無需采購和管理服務器等基礎設施,只需專注業務邏輯的開發,可以大幅縮短項目交付時間和人力成本;

  2. 提供日志查詢、性能監控、報警等功能快速排查故障;

  3. 免運維,毫秒級別彈性伸縮,快速實現底層擴容以應對峰值壓力,性能優異;

  4. 成本極具競爭力;

以上就是函數計算如何訪問SQL Server數據庫,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿拉善左旗| 遂溪县| 隆尧县| 九龙县| 洛南县| 津市市| 大丰市| 昌宁县| 资兴市| 聂荣县| 徐汇区| 青神县| 博乐市| 诸城市| 斗六市| 鹿泉市| 额济纳旗| 南阳市| 全州县| 永仁县| 平安县| 手机| 永宁县| 张掖市| 琼结县| 衡山县| 大丰市| 隆德县| 隆回县| 阿荣旗| 丹巴县| 嘉荫县| 无极县| 梁平县| 黑山县| 金堂县| 湘西| 布拖县| 敖汉旗| 高密市| 航空|