Monday, February 13, 2012

'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral,

I have a report that uses some embedded custom code. The embedded custom code is a function that execute some sql query on a sql server database.Everything works fine in Visual studio. The report gets deployed on the server successfully, however when running the report from report manager i get the following error message :

  • The Hidden expression for the table ‘table1’ contains an error: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
  • Here is the code :

    ************************************************************************

    Public function get_field() as string
    Dim myConnection As System.Data.SqlClient.SqlConnection
    Dim myCommand As System.Data.SqlClient.SqlCommand
    Dim data_reader As System.Data.SqlClient.SqlDataReader
    Dim field(100) as string
    Dim i as integer
    Dim j as integer
    Dim sql_field as string
    Dim nbr_field as integer
    Dim rtn_string as string


    i = 0
    sql_field ="Select field from mytable"
    myConnection = New System.Data.SqlClient.SqlConnection("Datasource=xxx.xxx.xxx.xx\mydatabase;Initial Catalog=mydatabase;User Id=user1;Password=password1;")
    myConnection.Open()
    myCommand = New System.Data.SqlClient.SqlCommand(sql_field, myConnection)
    data_reader = myCommand.ExecuteReader()
    While data_reader.Read()
    if data_reader.HasRows then
    field(i)= data_reader(0).ToString()
    end if
    nbr_field = nbr_field + 1
    i= i+1
    End While
    data_reader.Close()
    myConnection.Close()


    for j = 0 to nbr_field -1
    rtn_string = rtn_string + field(j) + ","
    Next j

    rtn_string = left(rtn_string,rtn_string.length-1)
    return rtn_string
    'return sql_cmd
    'return yes_no
    'return lkupfield
    end function

    ******************************************************************

    Why do i get the error message ?, is this related to Code Access Security issues with .net framework. if yes

    how do i set the Security so the report server or report manager allows embedded custom code to be executed. Any advice ?

    Chi


    To set code access security for your custom code, see the following article: http://msdn2.microsoft.com/en-us/library/aa237680(SQL.80).aspx

    -Albert

    |||

    Thanks Albert, i have one more question, do i have to grant permission even if the code that i use is embedded in the report .I mean i did not create a custom DLL. In other words do i have to grant permission to the code even if it's embedded in the report, but in my code i reference System.Data.SqlClient.

    Public function get_field() as string
    Dim myConnection As System.Data.SqlClient.SqlConnection
    Dim myCommand As System.Data.SqlClient.SqlCommand
    Dim data_reader As System.Data.SqlClient.SqlDataReader
    Dim field(100) as string
    Dim i as integer
    Dim j as integer
    Dim sql_field as string
    Dim nbr_field as integer
    Dim rtn_string as string


    i = 0
    sql_field ="Select field from mytable"
    myConnection = New System.Data.SqlClient.SqlConnection("Datasource=xxx.xxx.xxx.xx\mydatabase;Initial Catalog=mydatabase;User Id=user1;Password=password1;")
    myConnection.Open()
    myCommand = New System.Data.SqlClient.SqlCommand(sql_field, myConnection)
    data_reader = myCommand.ExecuteReader()
    While data_reader.Read()
    if data_reader.HasRows then
    field(i)= data_reader(0).ToString()
    end if
    nbr_field = nbr_field + 1
    i= i+1
    End While
    data_reader.Close()
    myConnection.Close()


    for j = 0 to nbr_field -1
    rtn_string = rtn_string + field(j) + ","
    Next j

    rtn_string = left(rtn_string,rtn_string.length-1)
    return rtn_string
    'return sql_cmd
    'return yes_no
    'return lkupfield
    end function

    chi

    |||

    Sorry, I didn't read your post carefully enough. Yes, you need to set code access security for the custom code in your report. The instructions are in the following article: http://msdn2.microsoft.com/en-us/library/aa237693(SQL.80).aspx. You need to modify the permissions for the "Report_Expressions_Default_Permissions" code group in the policy file.

    -Albert

  • No comments:

    Post a Comment