Export (0) Print
Expand All

SafeToPrepareAttribute Class

Marks the methods in the assembly that are safe to run with the ExecuteForPrepare property set to true.

Object
  Attribute
    Microsoft.AnalysisServices.AdomdServer.SafeToPrepareAttribute

Namespace:  Microsoft.AnalysisServices.AdomdServer
Assembly:  msmgdsrv (in msmgdsrv.dll)

public sealed class SafeToPrepareAttribute : Attribute

The SafeToPrepareAttribute type exposes the following members.

  NameDescription
Public methodSafeToPrepareAttributeInitializes a new instance of the SafeToPrepareAttribute class.
Top

  NameDescription
Public propertyIsSafeToPrepareGets a value that indicates whether the associated method is safe to run with the ExecuteForPrepare property set to true.
Public propertyTypeId (Inherited from Attribute.)
Top

  NameDescription
Public method{dtor}Releases all resources used by the SafeToPrepareAttribute.
Public methodEquals (Inherited from Attribute.)
Public methodGetHashCode (Inherited from Attribute.)
Public methodGetType (Inherited from Object.)
Public methodIsDefaultAttribute (Inherited from Attribute.)
Public methodMatch (Inherited from Attribute.)
Public methodToString (Inherited from Object.)
Top

  NameDescription
Explicit interface implemetationPrivate methodSystem#Runtime#InteropServices#_Attribute#GetIDsOfNames (Inherited from Attribute.)
Explicit interface implemetationPrivate methodSystem#Runtime#InteropServices#_Attribute#GetTypeInfo (Inherited from Attribute.)
Explicit interface implemetationPrivate methodSystem#Runtime#InteropServices#_Attribute#GetTypeInfoCount (Inherited from Attribute.)
Explicit interface implemetationPrivate methodSystem#Runtime#InteropServices#_Attribute#Invoke (Inherited from Attribute.)
Top

If a user defined function (UDF) returns a DataTable, the UDF should be able to prepare for execution by running with the ExecuteForPrepare property set to true. To prepare for execution, the UDF should determine the structure of the DataTable needed to be returned, and return an empty DataTable that is structured appropriately.

In the following example, a simple UDF creates a DataTable. If the UDF runs with the ExecuteForPrepare property set to true, the UDF returns with an empty version of the DataTable. If the UDF runs with the ExecuteForPrepare property set to false, the UDF continues, populates the DataTable, and returns the populated DataTable.

[SafeToPrepare(true)]
public System.Data.DataTable GetPreparedTable()
{
    System.Data.DataTable results = new System.Data.DataTable();
    results.Columns.Add("A", typeof(int));
    results.Columns.Add("B", typeof(string));

    if (Context.ExecuteForPrepare)
    {
        // If preparing, return just the schema with no data
        return results;
    }

    //Otherwise return data
    object[] row = new object[2];
    row[0] = 1;
    row[1] = "A";
    results.Rows.Add(row);

    row[0] = 2;
    row[1] = "B";
    results.Rows.Add(row);

    return results;
}

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

Show:
© 2014 Microsoft