我正在使用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数据库登录以使其正常工作?
编辑:
编辑2:
创建错误报告https://github.com/influxdata/telegraf/issues/4222。
编辑3:
截至最新版本,如果使用服务器管理员帐户,插件可以正常工作,因此问题已经解决。仍然无法在Azure DB中使用权限较低的帐户运行。
答案 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中使用此类应用程序