【问题标题】:Is an application role active on a SQL server connection?SQL Server 连接上的应用程序角色是否处于活动状态?
【发布时间】:2011-11-17 07:52:09
【问题描述】:

我如何检查一个(以及哪个)应用程序角色是否为连接(DbConnection 对象)到 sql server 处于活动状态?

我的问题是,所有数据库对象都为我的应用程序角色授予了访问权限,但是在执行 select 语句时,我收到“拒绝访问”错误。 我使用激活了应用程序角色的单个连接对象,但我担心 EntityFramework 或 DI 容器会由于配置错误而创建另一个 DbConnection 对象。

【问题讨论】:

    标签: c# sql-server application-role


    【解决方案1】:

    哦。在重新阅读sp_setapprole 的文档时,我看到了这个示例代码:

    DECLARE @cookie varbinary(8000);
    EXEC sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'
        , @fCreateCookie = true, @cookie = @cookie OUTPUT;
    -- The application role is now active.
    SELECT USER_NAME();
    -- This will return the name of the application role, Sales11.
    

    所以看来访问USER_NAME() 就可以了。

    【讨论】:

    • 没有机会获得没有其他语句执行的信息?以便在调试器中可以看到?
    • @okrumnow - 据我所知,我也看不到从另一个连接读取它的方法(例如,我希望它可能出现在 DMV 中(例如 @ 987654324@,但我似乎在任何地方都找不到)
    猜你喜欢
    • 2012-10-13
    • 2011-01-17
    • 2011-06-11
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多