public static void SendRpc(this TdsPackageWriter writer, SqlCollations defaultCollation, FormattableString sql, long sqlConnectionId) { writer.NewPackage(TdsEnums.MT_RPC); writer.WriteMarsHeader(sqlConnectionId); writer.WriteInt16(0xffff); writer.WriteInt16(TdsEnums.RPC_PROCID_EXECUTESQL); // Options writer.WriteInt16(TdsEnums.RPC_PARAM_DEFAULT); // Stream out parameters var parameters = CreateParameters(sql); foreach (var parameter in parameters) { // parameters can be unnamed var param = parameter; var value = parameter.Value; var isNull = value == null; writer.WriteByteLenString(param.Name); // Write parameter status writer.WriteByte(parameter.Status); var p = parameter; var mt = p.MetaData; WriteTdsTypeInfo(writer, mt, p.Size, p.IsNull, defaultCollation, p.Scale); WriteValue(writer, value, mt, isNull); } writer.SendLastMessage(); }
private static void WriteTransactionHeader(TdsPackageWriter writer, TdsEnums.TransactionManagerRequestType request, long sqlTransactionId) { writer.NewPackage(TdsEnums.MT_TRANS); writer.WriteMarsHeader(sqlTransactionId); writer.WriteInt16((short)request); // write TransactionManager Request type }
public static void SendExecuteBatch(this TdsPackageWriter tdsPackageWriter, string text, long sqlConnectionId) { tdsPackageWriter.NewPackage(TdsEnums.MT_SQL); tdsPackageWriter.WriteMarsHeader(sqlConnectionId); tdsPackageWriter.WriteUnicodeString(text); tdsPackageWriter.SendLastMessage(); }