Azure SQL数据库中的SQL Server Telegraf插件需要哪些授权

时间:2018-05-31 20:42:09

标签: sql-server azure-sql-database telegraf

我正在使用SQL Server的Telegraf输入插件(https://github.com/influxdata/telegraf/tree/master/plugins/inputs/sqlserver)来收集指标并向InfluxDB报告。它适用于SQL Server,但虽然它支持Azure SQL数据库,但文档有点稀疏。

应该像这样创建数据库用户:

CREATE LOGIN [telegraf] WITH PASSWORD = N'password';
GRANT VIEW SERVER STATE TO [telegraf];
GRANT VIEW ANY DEFINITION TO [telegraf];

适用于SQL Server,但在Azure中失败:

  

安全课程'服务器'此版本的SQL Server不支持。

我想知道我需要批准什么才能以最好的方式解决这个问题。我们在弹性池中的同一台服务器上运行了大量数据库,所以如果可能的话,我想使用登录主服务器的单个用户,同时收集所有数据库的指标(工作方式)与SQL Server)。如果这是不可能的,我可以配置多个登录并一次处理一个数据库。

也许我可以在数据库级别授予VIEW DEFINITION,但似乎根本不支持VIEW SERVER STATE

那么,我应该如何使用SQL Server插件为Telegraf配置SQL数据库登录以使其正常工作?

编辑:

  • 作为服务器的超级用户运行时没有错误,但只生成master和tempdb的度量标准。我需要许多应用程序数据库的指标,但它们都缺失了。另外,作为超级用户运行还不够理想。
  • 作为服务器的超级用户运行但连接到特定的应用程序数据库(在连接字符串中添加数据库)使用nil指针解除引用崩溃,并且日志在数据库主服务器中抱怨VIEW DATABASE STATE权限被拒绝(超级用户具有访问权限) ,但显然不是在连接到特定数据库时。)
  • 向应用程序数据库中的telegraf授予VIEW DATABASE和VIEW DEFINITION,并直接连接到该数据库,因为telegraf使用nil指针取消引用崩溃,并且日志显示连接已关闭。

编辑2:

创建错误报告https://github.com/influxdata/telegraf/issues/4222

编辑3:

截至最新版本,如果使用服务器管理员帐户,插件可以正常工作,因此问题已经解决。仍然无法在Azure DB中使用权限较低的帐户运行。

1 个答案:

答案 0 :(得分:3)

答案: Azure SQL数据库不支持GRANT VIEW SERVER STATE

  

在SQL数据库上,Premium Tiers需要VIEW DATABASE STATE   数据库中的权限。无法在Master中授予权限,   但可以在用户数据库中查询视图。在SQL数据库上   标准和基本层需要SQL数据库服务器管理员   由于多租户之后的安全要求而导致的帐户   那些层次。

<强>原因: SQL Azure SQL是PaaS解决方案,因此是最多的服务器&#34;特定功能,DMV,设置被目的阻止

<强>参考文献:

Grant View Server State - is it possible for a none SA user to have in Azure SQL?

SQL Azure VIEW DATABASE STATE permission denied in database 'master'

可能的解决方法:(无论如何,在ewramner案例中无效)

CREATE LOGIN [telegraf] WITH PASSWORD = N'password';

USE [yourDB]
GRANT VIEW DEFINITION TO [telegraf];
GRANT VIEW DATABASE STATE TO [telegraf];

因此,(恕我直言),如果不更改应用程序代码,就无法在SQL Azure中使用此类应用程序