/// <summary> /// This method implements CleanupSession API. /// Clean up per-session information. /// </summary> /// <param name="sessionId"> /// GUID uniquely identifying this script session. /// </param> /// <param name="taskId"> /// An integer uniquely identifying this execution process. /// </param> /// <returns> /// SQL_SUCCESS(0), SQL_ERROR(-1) /// </returns> public static short CleanupSession( Guid sessionId, ushort taskId) { Logging.Trace("CSharpExtension::CleanupSession"); return(ExceptionUtils.WrapError(() => { if (_currentSession != null) { _currentSession.CleanupSession(); _currentSession = null; } _currentSession = null; })); }
/// <summary> /// This method implements InitSession API /// </summary> /// <param name="sessionId"> /// GUID uniquely identifying this script session. /// </param> /// <param name="taskId"> /// An integer uniquely identifying this execution process. /// </param> /// <param name="numTasks"> /// Number of tasks for this session. /// </param> /// <param name="script"> /// Null-terminated UTF-8 string containing the @script in sp_execute_external_script. /// </param> /// <param name="scriptLength"> /// Length in bytes of ScriptScript (excluding the null termination character). /// </param> /// <param name="inputSchemaColumnsNumber"> /// Number of columns in the result set from @input_data_1 in sp_execute_external_script. /// </param> /// <param name="parametersNumber"> /// Number of input parameters from @params in sp_execute_external_script. /// </param> /// <param name="inputDataName"> /// Null-terminated UTF-8 string containing the @input_data_1_name in sp_execute_external_script. /// </param> /// <param name="inputDataNameLength"> /// Length in bytes of InputDataName (excluding the null termination character). /// </param> /// <param name="outputDataName"> /// Null-terminated UTF-8 string containing the @output_data_1_name in sp_execute_external_script. /// </param> /// <param name="outputDataNameLength"> /// Length in bytes of OutputDataName (excluding the null termination character). /// </param> /// <returns> /// SQL_SUCCESS(0), SQL_ERROR(-1) /// </returns> public static short InitSession( Guid sessionId, ushort taskId, ushort numTasks, char *script, ulong scriptLength, ushort inputSchemaColumnsNumber, ushort parametersNumber, char *inputDataName, ushort inputDataNameLength, char *outputDataName, ushort outputDataNameLength) { Logging.Trace("CSharpExtension::InitSession"); return(ExceptionUtils.WrapError(() => { string scriptStr = (script != null) ? Interop.UTF8PtrToStr(script, scriptLength) : string.Empty; string inputDataNameStr = Interop.UTF8PtrToStr(inputDataName, inputDataNameLength); string outputDataNameStr = Interop.UTF8PtrToStr(outputDataName, outputDataNameLength); CSharpUserDll userDll = new CSharpUserDll( publicPath: _publicLibraryPath, privatePath: _privateLibraryPath, userScriptFullName: scriptStr); _currentSession = new CSharpSession( sessionId: sessionId, taskId: taskId, numTasks: numTasks, script: scriptStr, inputSchemaColumnsNumber: inputSchemaColumnsNumber, parametersNumber: parametersNumber, inputDataName: inputDataNameStr, outputDataName: outputDataNameStr, userDll: userDll); })); }