Windows Azure Virtual Machine (35) Azure VM通过Linked DB,执行SQL Job
《Windows Azure Platform 系列文章目录》
今天遇到一个Case,客户在使用Azure Automation,执行Azure SQL Database 存储过程的时候,超过3个小时造成超时Runbook超时。
https://docs.azure.cn/zh-cn/automation/automation-runbook-execution
为了在云中的所有 Runbook 之间共享资源,Azure 自动化在任何作业运行三小时后都会将其暂时卸载。 在此期间,基于 PowerShell 的 Runbook 作业都将停止且不能重新启动。 作业状态显示“已停止”。 此类型的 Runbook 始终从头开始重新启动,因为它们不支持检查点。
基于 PowerShell 工作流的 Runbook 会从上一个检查点进行恢复。 运行三小时后,Runbook 作业将由服务挂起,且其状态显示为“正在运行等待资源”。 沙盒变为可用时,Runbook 将通过自动化服务自动重新启动,并从上一个检查点恢复。 这是实现挂起/重新启动的正常 PowerShell 工作流行为。 如果 Runbook 再次超过三小时的运行时,将重复该过程,最多三次。 在第三次重新启动后,如果 Runbook 仍未在三小时内完成,则 Runbook 作业将失败,且作业状态显示为“失败,正在等待资源”。 在此情况下,会收到以下异常和失败。
因为客户的存储过程的逻辑很复杂,执行时间超过3个小时且无法短期内修改。
我换了一个思路,可以通过客户自己本地IDC的SQL Server VM,通过增加本地Linked Server,链接云端的Azure PaaS SQL Database。
然后在本地IDC的Azure SQL VM的SQL Agent执行SQL Job。步骤如下:
1.在本地的PC上,安装SQL Server management Studio,链接到云端Azure SQL Database
2.在本地PC的SSMS,在Master库里,增加Linked Server。命令如下:
EXEC sp_addlinkedserver
@server='AzureSQL',
@srvproduct='',
@provider='sqlncli',
@datasrc='tcp:你的云端数据库Server Name.database.chinacloudapi.cn,1433',
@location='',
@provstr='',
@catalog='你的云端数据库DBName' exec sp_addlinkedsrvlogin 'AzureSQL', 'FALSE', NULL, '登录云端数据库的用户名','登录云端数据库的密码';
这里的sp_addlinkedsrvlogin,第一个参数是Linked Server的别名
3. 执行成功后,可以看到本得SQL Server,有Linked Server信息。如下图:
4.可以测试执行脚本,比如:
select * from AzureSQL.[LeiSQLDB].[SalesLT].[Customer];
注意,第一个参数是linkedDB的别名。我们在步骤2里面指定好了。
第2个参数是Database Name。
第3个参数是Schema and Table
5.执行结果
6.然后我们可以通过本地的SQL Agent,执行SQL Job
7.下面的步骤略
Windows Azure Virtual Machine (35) Azure VM通过Linked DB,执行SQL Job的更多相关文章
- [New Portal]Windows Azure Virtual Machine (18) Azure Virtual Machine内部IP和外部IP
<Windows Azure Platform 系列文章目录> 在开始本章内容之前,请读者熟悉以下2篇博文: [New Portal]Windows Azure Virtual ...
- Windows Azure Virtual Machine (24) Azure VM支持多网卡功能
<Windows Azure Platform 系列文章目录> Update 2016-03-30 一个VM的多张网卡可以在一个VNet的同一个Subnet子网下,笔者亲自测试过了. 如果 ...
- Windows Azure Virtual Machine (34) Azure VM挂载WebDAV
<Windows Azure Platform 系列文章目录> 之前使用Azure VM,挂载box网盘.发现不能正常挂载,这里简单记录一下. 1.WebDAV的网络映射,需要WebCli ...
- Windows Azure Virtual Machine (33) Azure虚拟机删除重建
<Windows Azure Platform 系列文章目录> 注意:本文介绍的重建Azure虚拟机,必须在同一个订阅内删除重建,必须在同一个订阅内删除重建,必须在同一个订阅内删除重建. ...
- [SQL in Azure] Provisioning a SQL Server Virtual Machine on Azure
http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-provision-sql-server/ Provi ...
- [New Portal]Windows Azure Virtual Machine (21) 将本地Hyper-V的VM上传至Windows Azure Virtual Machine
<Windows Azure Platform 系列文章目录> 本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,并且保留OS中的内容. 注意:笔者没有执行Syspr ...
- Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM
<Windows Azure Platform 系列文章目录> Update: 2016-11-3,如果大家在使用Linux VM,使用FIO进行IOPS测试的时候,请使用以下命令: su ...
- Windows Azure Virtual Machine (29) 修改Azure VM 数据磁盘容量
<Windows Azure Platform 系列文章目录> 当我们使用Windows Azure管理界面,创建Azure虚拟机的时候,默认挂载的磁盘是固定大小的 1.比如我创建1个Wi ...
- Windows Azure Virtual Machine (30) 修改Azure VM 的Subnet
<Windows Azure Platform 系列文章目录> 我在使用Azure Virtual Machine虚拟机的时候,常常会结合Virtual Network虚拟网络一起使用. ...
随机推荐
- tensorboard 可视化
#coding = utf8 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mn ...
- Java当中的JVM
Java当中JVM 01 在使用控制面板时的实质: Hello.java使用javac,然后变成为Hello.class通过运行java这个命令,在类加载器中(含有加载,验证,准备,解析,初始化,使用 ...
- java-方法重写和方法重载的区别
1.方法重载: - 英文:Overload - 可以改变返回值类型,只看参数列表. - 本类中出现的方法名一样,参数列表不同的方法,与返回值类型无关. 2.方法重写: - 英文:Override - ...
- linux入门001--帮助支持
linux入门001--帮助支持====1. 帮助手册提供命令的使用说明:man ls提供基础知识和参考信息,有时会有实例和交叉索引,但是基本没有教程式的文档.就是说,并不会有偏重告诉你那个重要,那个 ...
- Windows 清理磁盘
====手动清理C盘(开始\运行\cleanmgr,选择C盘...)或者如下右键C盘,选择属性,点击通用页签下方[磁盘清理]按钮.磁盘清理界面,中间部分可以选择要清理的项目,可以全选.然后点击下方的清 ...
- 实验吧—密码学——WP之 困在栅栏里的凯撒
首先我们研究题目.栅栏:凯撒 还发现一个数字“6”,那么我们很容易就有一个解题思路 对这段字符进行栅栏解密再进行凯撒解密 我们都知道,栅栏解密的关键就是栏数,根据题目中我们发现的信息,这段字符串是12 ...
- hdu4289 Control 最大流最小割
You, the head of Department of Security, recently received a top-secret information that a group of ...
- mysql 常用函数-locate 和 instr 和 regexp
★1 -- 表级锁 情况SHOW STATUS LIKE 'table%';-- 行级锁 情况SHOW STATUS LIKE 'innodb_row_lock%'; -- 进程列表SHOW PROC ...
- Easyui combobox下拉框默认选中第一项
var val = $(#cc).combobox("getData");for (var item in val[0]) { if (item == "gr ...
- 使用sync 修饰符------子组件内部可以修改props
首先看一个需求,外部点击一个按钮,让弹窗组件显示(也就是将弹窗组件显示的flag置为true),点击弹窗组件内部的某个按钮 ,让改props置为false,关闭弹窗,但是会报警告,因为内层组件不能修改 ...