ewr*_*ner 16 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];
Run Code Online (Sandbox Code Playgroud)
这适用于SQL Server,但在Azure中它失败:
此版本的SQL Server不支持安全类"服务器".
我想知道我需要批准什么才能以最好的方式解决这个问题.我们在弹性池中的同一台服务器上运行了大量数据库,所以如果可能的话,我想使用登录主服务器的单个用户,同时收集所有数据库的指标(工作方式)与SQL Server).如果这是不可能的,我可以配置多个登录并一次处理一个数据库.
也许我可以VIEW DEFINITION
在数据库级别授予,但VIEW SERVER STATE
似乎根本不受支持.
那么,我应该如何使用SQL Server插件为Telegraf配置SQL数据库登录以使其正常工作?
编辑:
编辑2:
答案:
GRANT VIEW SERVER STATE
Azure SQL 数据库不支持。
在 SQL 数据库高级层上需要数据库中的 VIEW DATABASE STATE 权限。Master中无法授予权限,但可以在用户数据库中查询视图。在 SQL 数据库标准层和基本层上,由于这些层的多租户的安全要求,需要 SQL 数据库服务器管理员帐户。
原因: SQL Azure SQL 是 PaaS 解决方案,因此大多数“服务器”特定功能、DMV、设置都被目的阻止
参考:
授予查看服务器状态 - 非 SA 用户是否可以在 Azure SQL 中拥有?
SQL Azure VIEW DATABASE STATE 权限在数据库“master”中被拒绝
可能的解决方法:(无论如何,在 ewramner 情况下不起作用)
CREATE LOGIN [telegraf] WITH PASSWORD = N'password';
USE [yourDB]
GRANT VIEW DEFINITION TO [telegraf];
GRANT VIEW DATABASE STATE TO [telegraf];
Run Code Online (Sandbox Code Playgroud)
因此,(恕我直言),如果不更改应用程序代码,就无法使此类应用程序在 SQL Azure 中运行
归档时间: |
|
查看次数: |
403 次 |
最近记录: |