Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security MDX CA 2100安全问题_Security_Mdx - Fatal编程技术网

Security MDX CA 2100安全问题

Security MDX CA 2100安全问题,security,mdx,Security,Mdx,我已经编写了MDX查询并将其分配给Adomd连接对象。当我运行代码分析时,它会给我CA2100检查SQL查询的安全漏洞错误,我们不能直接向连接对象提供查询。它说要么我们应该将其嵌入存储过程中,要么使用参数化查询。但是在我的例子中,这个查询没有参数。因此,请帮忙,我如何才能删除这个CA 2100安全错误。PFB代码。提前谢谢 conn.Open(); // Adomd Connection Object var adomdCommand =

我已经编写了MDX查询并将其分配给Adomd连接对象。当我运行代码分析时,它会给我CA2100检查SQL查询的安全漏洞错误,我们不能直接向连接对象提供查询。它说要么我们应该将其嵌入存储过程中,要么使用参数化查询。但是在我的例子中,这个查询没有参数。因此,请帮忙,我如何才能删除这个CA 2100安全错误。PFB代码。提前谢谢

            conn.Open();
        // Adomd Connection Object
        var adomdCommand = new AdomdCommand()
        {
            Connection = conn,
            CommandType = CommandType.Text,
            CommandText = mdxQuery
        };
        //Execute command to return cell set..
        CellSet csResult = adomdCommand.ExecuteCellSet();

        conn.Close();

您可以在SQL Server中创建执行AS查询的存储过程。假设sp是预编译的,这是安全的。您应该执行以下操作:

通过SSMS中的服务器对象将AS服务器作为链接服务器添加到SQL数据库服务器 创建存储过程。总体方案如下:

declare @tsqlquery varchar(1000)
declare @mdxquery varchar(2000)

set @tsqlquery = 'SELECT
                "[DimA].[A].[A name].[MEMBER_CAPTION]" as dimensionName, 
                convert(float, "[Measures].[X]") AS measureValue
              FROM OPENQUERY(<**YOUR LINKED SERVER**>,'

 set @mdxquery = '''**YOUR MDX QUERY**'  + '''' + ')'

 EXEC(@tsqlquery + @mdxquery)
您还可以创建参数化存储过程,该过程基于参数修改MDX查询文本。只要您使用存储过程,您就是安全的。例如,我们的报表服务器查询仅使用SP,而不是直接作为查询

另外,如果您的AS服务器定义了角色安全性,您应该为数据库启用ImpersonateCurrentUser,那么您的角色将正常工作