评价这篇文章

如果您想利用Azure自动化来分析数据库条目,并每天或每周发送一些统计数据甚至报告,该怎么办?
你为什么要这么做?

  • 按需计算:
    • 您可能无法访问物理服务器。或者您的计算机不够强大,无法处理巨大的数据处理。或者你肯定不想在星期五晚上离开之前在办公室等任务完成。
  • 你按分钟付款
    • Azure的自动化,你的前500分钟是免费的,然后你按分钟付款。退房Azure自动化定价了解更多详细信息。顺便说一下,它非常便宜。
  • 用PowerShell做这件事非常酷。

还有其他的原因为什么会有人使用Azure自动化,但我们没有深入了解这方面的细节。我们要做的是利用PowerShell来做这些事情。就这样!
查询一个SQL数据库,无论它在Azure中是否如此复杂。事实上,这篇文章只是为了让我们开始。对于这部分,我们要做一些简单的事情,因为如果你想把事情做好,你需要最快的方法。这就是我们要做的。但以下是我想做的方法的简要总结:

    1. 使用'调用-sqlcmd2'的。博客的这一部分……它非常快速和容易设置,它有助于快速完成事情。
    2. 创建自己的SQL连接对象来推动复杂的SQL查询场景。[这里是魔术开始. .本系列第2部分]]

我们如何快速完成这项工作?
为了保持简单,我们假设如下:

  • 我们有一个名为“的Azure SQL数据库”我的数据库',在Azure SQL服务器内部'mytestazuresql.database.windows.net'的。
  • 它是一个简单的数据库,包含一个表。测试表.这个表基本上有三列(身份证,姓名,年龄)这个表只包含两条记录。
  • 我们已经安排好了允许Azure服务'在防火墙规则中访问此数据库的方法如下所示,以防万一:
    • 搜索数据库资源。
    • 单击'设置防火墙规则'从顶部菜单。
    • 确保选项'允许Azure服务'设置为'打开'
  • 我们有一个Azure自动化帐户设置。我们将用它来测试我们的代码。

现在,让我们开始吧
从创建两个变量开始,一个包含SQL Server名称,另一个包含数据库名称。
然后创建一个自动化凭证对象来存储您的SQL登录用户名和密码。您需要这样做,因为您绝对不应该考虑将密码以纯文本形式存储在脚本编辑器中。

我仍然看到人们在脚本中以纯文本形式存储密码。

现在您需要导入'调用-sqlcmd2自动账户中的模块。这可以通过以下方式实现:

  • 选择模块选项卡,从自动化帐户的左侧选项。
  • 从顶部菜单中,点击浏览库,请搜索模块'调用-sqlcmd2',点击然后点击导入'的。完成这项工作需要大约一分钟。

现在从自动化账户的主菜单,单击'运行手册'标签然后'添加一个Runbook',给它起个名字然后用'PowerShell'作为类型。现在您需要编辑运行手册。要做到这一点,单击顶部菜单中的铅笔图标进入编辑窗格。
在窗格中,粘贴以下代码。(我会详细介绍的,别担心)。

#从自动化帐户导入凭据对象$sqlservercred=get automationpscredential-name“mysqllogin”#从自动化帐户导入凭据对象#从自动化变量导入SQL Server名称。$sql_server_name=get automationvariable-name“azuresql_servername”#从自动化变量导入SQL Server名称。#从自动化变量导入SQL数据库。$sql_db_name=get automationvariable-name“azuresql_dbname”
    • 第一个Cmdlet'获取AutomationPSCredential'是检索我们刚刚创建的自动化凭证对象。
    • 接下来的两个命令获取自动变量'将检索我们刚刚为SQL Server名称和SQL数据库名称创建的两个自动化变量。

现在让我们查询数据库。要做到这一点,将下面的代码粘贴到上面的部分之后。

#要执行的查询$query=“从测试表中选择*”“-----测试结果开始”#调用到Azure SQL数据库invoke-sqlcmd2 -ServerInstance“SQL_Server_Name美元”-数据库“$sql_db_name”-凭证$sqlservercred-查询“$query”-加密“`N-----测试结果结束”

我们在上面做了什么?

    • 我们创建了一个包含查询的简单变量。我知道这个问题太简单了,但是你可以把你想要的放在那里。
    • 我们已经执行了Cmdlet'调用-sqlcmd2'的。如果你注意到,我们不需要导入刚安装的模块,Azure自动化会在每次执行时处理这个问题。
    • 在Cmdlet参数集中,我们指定了SQL Server(已从自动化变量中检索到)。以及数据库名称(也包括自动化变量)。现在我们使用从Azure automation导入的凭据对象。最后,我们使用了我们还创建的查询变量。可选开关参数“-encypt”可用于加密到SQL Server的连接。

让我们运行代码并查看输出!
在编辑窗格中,单击'测试窗格'从上面的菜单。单击'起点'要开始测试代码,观察输出。
最初,代码将经历以下执行阶段

  • 排队
  • 开始
  • 正在运行
  • 完整的

最后的结果是什么?看看黑盒子,你应该看到类似的东西。

-----测试结果开始ID名称年龄-------1 John 18 2 Alex 25-----测试结果结束

很可爱,对吧?现在我们得到的输出是一个类型为'的对象数据行'的。如果将此查询包装为变量,你可以开始用它做一些很酷的事情,比如
$result.count个
$result.age.年龄甚至
$result其中object-filterscript$psitem.age-gt 10
现在想象一下,如果你能用这个做那么复杂的事情。
快速提示:

如果在调用cmdlet中包含一个' -debug'选项,您将看到纯文本格式的用户名和密码。只是不要在启用调试选项的情况下运行此代码

请继续关注第2部分!你看!

类别:
Azure基础设施,请 Azure平台,请 托管服务,请 PowerShell
标签:
,请 ,请 ,请 ,请

1个
留下答复

留下答复

订阅
最新 最老的 投票最多的
通知
杰西卡
客人

感谢分享这篇文章,
是一篇很有帮助的文章。

跟我们来!

克劳德解决方案博客-关注我们!