SqlServerDsc 中是不是有可用于配置 ALTER TRACE 服务器权限的资源?

Posted

技术标签:

【中文标题】SqlServerDsc 中是不是有可用于配置 ALTER TRACE 服务器权限的资源?【英文标题】:Is there a resource in SqlServerDsc I can use to configure the ALTER TRACE server permission?SqlServerDsc 中是否有可用于配置 ALTER TRACE 服务器权限的资源? 【发布时间】:2021-05-17 02:30:48 【问题描述】:

我可以使用来自SqlServerDsc 模块的 PowerShell DSC 资源来实现以下 T-SQL 代码吗?

USE master
GRANT ALTER trace TO [myUser]

我尝试了以下方法但没有成功:

SqlDatabasePermission Grant_Alter_Trace_Permission

    Ensure               = 'Present'
    Name                 = 'mysqlUser'
    Database             = 'master'
    PermissionState      = 'Grant'
    Permissions          = 'ALTER TRACE'
    ServerName           = 'sqltest.company.local'
    InstanceName         = 'MSSQLSERVER'

资源失败并出现以下错误:

PowerShell DSC 资源 DSC_SqlDatabasePermission 无法执行 Set-TargetResource 功能并显示错误消息:System.InvalidOperationException:名称“mySqlUser”既不是数据库用户、数据库角色(用户定义),也不是数据库“主”中的数据库应用程序角色'。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

ALTER TRACE 是 Server Permission 不是数据库权限。因此,如果存在这种情况,请尝试使用 SqlServerPermission 而不是 SqlDatabasePermission

您可以通过在 Master 中为 mySQLUser 创建一个用户来解决此问题。我的猜测是 DSC 在运行之前会检查数据库主体的存在

GRANT ALTER trace TO [MyUser]

如果登录存在,并且您可以说服 DSC 尝试它,那么该授权将会成功。

【讨论】:

有一个资源来管理服务器级别的权限 (SqlPermission) 但不幸的是它仅限于以下权限:ConnectSql、AlterAnyAvailabilityGroup、ViewServerState、AlterAnyEndPoint。感谢您的帮助! 我能够克服第一个错误,但该过程仍然失败并出现以下错误:无法调用 DSC Set 方法:PowerShell DSC 资源 DSC_SqlDatabasePermission 无法执行 Set-TargetResource 功能并出现错误消息:系统.InvalidOperationException:无法在数据库“master”中设置登录“myUser”的权限。 ---> System.Management.Automation.RuntimeException:在此对象上找不到属性“ALTER TRACE”。验证该属性是否存在并且可以设置。 啊。看起来它使用的是 SMO 而不是仅仅发出 SQL 语句。

以上是关于SqlServerDsc 中是不是有可用于配置 ALTER TRACE 服务器权限的资源?的主要内容,如果未能解决你的问题,请参考以下文章

是否有可用于我正在构建的应用程序的现有数据层?

是否有可用于在我的网站中进行视频修剪/剪切的 flash/JavaScript 库?

是否有可用于 phing 的 ssh 和 scp 任务?

Java中是不是有可移植的共享内存机制?

java 8+中是否有可用于替代番石榴前置条件的良好现场验证?

是否有可用于列出非 zip 档案内容的 gem?