Here are the examples of the csharp api System.Data.SqlClient.SqlConnection.CreateCommand() taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
532 Examples
19
View Source File : SqlTestDB.cs
License : MIT License
Project Creator : tcartwright
License : MIT License
Project Creator : tcartwright
private static bool SafeDatabaseExists(InstanceInfo instance, string dbName)
{
try
{
SqlTestDB masterDb = new SqlTestDB(instance, "master");
using (SqlConnection connection = masterDb.OpenSqlConnection())
{
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = string.Format(CultureInfo.CurrentCulture, "select count(*) from sys.databases where [name]='{0}'", dbName);
object result = command.ExecuteScalar();
int count;
return result != null && int.TryParse(result.ToString(), out count) && count > 0;
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return false;
}
}
19
View Source File : TestUtils.cs
License : MIT License
Project Creator : tcartwright
License : MIT License
Project Creator : tcartwright
private static SqlCommand GetCommandObject(SqlConnection conn, string sqlCommandText, int commandTimeOut)
{
SqlCommand cmd = conn.CreateCommand();
// reasonable hard code to prevent hang client.
cmd.CommandTimeout = commandTimeOut;
cmd.CommandText = String.Format(CultureInfo.InvariantCulture, _setLockTimeoutDefault, GetLockTimeoutMS());
cmd.ExecuteNonQuery();
cmd.CommandText = sqlCommandText;
return cmd;
}
19
View Source File : TestUtils.cs
License : MIT License
Project Creator : tcartwright
License : MIT License
Project Creator : tcartwright
public static void ExecuteNonQuery(SqlConnection conn, string sql, int commandTimeout = CommonConstants.DefaultCommandTimeout)
{
SqlCommand cmd = conn.CreateCommand();
try
{
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = commandTimeout;
// Set seven-sets
cmd.CommandText = "SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;";
cmd.ExecuteNonQuery();
cmd.CommandText = "SET NUMERIC_ROUNDABORT OFF;";
cmd.ExecuteNonQuery();
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
Console.WriteLine("Exception{0}{1}{0}While executing TSQL:{0}{2}",
Environment.NewLine,
ex,
sql);
throw ex;
}
}
19
View Source File : SqlConnectionHelper.cs
License : Apache License 2.0
Project Creator : to11mtm
License : Apache License 2.0
Project Creator : to11mtm
public static bool CreateDatabase(string dbName, string dbFileName)
{
try
{
string connectionString =
String.Format(@"Data Source=(LocalDB)\mssqllocaldb;Initial Catalog=master;Integrated Security=True");
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand cmd = connection.CreateCommand();
DetachDatabase(dbName);
cmd.CommandText = String.Format("CREATE DATABASE {0} ON (NAME = N'{0}', FILENAME = '{1}')", dbName,
dbFileName);
cmd.ExecuteNonQuery();
}
if (File.Exists(dbFileName)) return true;
else return false;
}
catch
{
throw;
}
}
19
View Source File : SqlConnectionHelper.cs
License : Apache License 2.0
Project Creator : to11mtm
License : Apache License 2.0
Project Creator : to11mtm
public static bool DetachDatabase(string dbName)
{
try
{
string connectionString =
String.Format(@"Data Source=(LocalDB)\mssqllocaldb;Initial Catalog=master;Integrated Security=True");
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand cmd = connection.CreateCommand();
cmd.CommandText = String.Format("exec sp_detach_db '{0}'", dbName);
cmd.ExecuteNonQuery();
return true;
}
}
catch
{
return false;
}
}
19
View Source File : MultithreadedOrderInsertMain.cs
License : MIT License
Project Creator : TrainingByPackt
License : MIT License
Project Creator : TrainingByPackt
public void PerformSqlTask(int TaskNumber, MulreplacedhreadedOrderInsertMain ParentForm)
{
var errorOccurred = false;
while (!errorOccurred)
{
try
{
using (var con = new SqlConnection(ConnectionStringTextBox.Text))
{
var startingTime = DateTime.Now;
con.Open();
using (var selectCommand = con.CreateCommand())
{
var da = new SqlDataAdapter(selectCommand);
var rnd = new Random(TaskNumber);
selectCommand.CommandText = "SELECT TOP(1) PersonID FROM [Application].People WHERE IsEmployee <> 0 ORDER BY NEWID();";
var personTable = new DataTable("Person");
da.Fill(personTable);
var salespersonID = (int)(personTable.Rows[0]["PersonID"]);
selectCommand.CommandText = "SELECT TOP(1) 1 AS OrderReference, c.CustomerID, c.PrimaryContactPersonID AS ContactPersonID, CAST(DATEADD(day, 1, SYSDATETIME()) AS date) AS ExpectedDeliveryDate, CAST(FLOOR(RAND() * 10000) + 1 AS nvarchar(20)) AS CustomerPurchaseOrderNumber, CAST(0 AS bit) AS IsUndersupplyBackordered, N'Auto-generated' AS Comments, c.DeliveryAddressLine1 + N', ' + c.DeliveryAddressLine2 AS DeliveryInstructions FROM Sales.Customers AS c ORDER BY NEWID();";
var orderTable = new DataTable("Orders");
da.Fill(orderTable);
selectCommand.CommandText = "SELECT TOP(7) 1 AS OrderReference, si.StockItemID, si.StockItemName AS [Description], FLOOR(RAND() * 10) + 1 AS Quanreplacedy FROM Warehouse.StockItems AS si WHERE IsChillerStock = 0 ORDER BY NEWID()";
if (rnd.Next(1, 100) < 4)
{
selectCommand.CommandText += "UNION ALL SELECT TOP(1) 1 AS OrderReference, si.StockItemID, si.StockItemName AS [Description], FLOOR(RAND() * 10) + 1 AS Quanreplacedy FROM Warehouse.StockItems AS si WHERE IsChillerStock <> 0 ORDER BY NEWID()";
}
selectCommand.CommandText += ";";
var orderLinesTable = new DataTable("OrderLines");
da.Fill(orderLinesTable);
using (var insertCommand = con.CreateCommand())
{
insertCommand.CommandType = CommandType.StoredProcedure;
insertCommand.CommandText = "Website.InsertCustomerOrders";
var orderList = new SqlParameter("@Orders", SqlDbType.Structured);
orderList.TypeName = "Website.OrderList";
orderList.Value = orderTable;
insertCommand.Parameters.Add(orderList);
var orderLineList = new SqlParameter("@OrderLines", SqlDbType.Structured);
orderLineList.TypeName = "Website.OrderLineList";
orderLineList.Value = orderLinesTable;
insertCommand.Parameters.Add(orderLineList);
var ordersCreatedByPersonID = new SqlParameter("@OrdersCreatedByPersonID", SqlDbType.Int);
ordersCreatedByPersonID.Value = salespersonID;
insertCommand.Parameters.Add(ordersCreatedByPersonID);
var salespersonPersonID = new SqlParameter("@SalespersonPersonID", SqlDbType.Int);
salespersonPersonID.Value = salespersonID;
insertCommand.Parameters.Add(salespersonPersonID);
insertCommand.ExecuteNonQuery();
}
}
con.Close();
ParentForm.UpdateTotals((int) DateTime.Now.Subtract(startingTime).TotalMilliseconds);
}
}
catch (Exception ex)
{
errorOccurred = true;
ParentForm.errorHasOccurred = true;
ParentForm.errorDetails = ex.ToString();
}
}
}
19
View Source File : StateManager.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<StateResult<Offset>> GetLastCdcOffsetAsync(string executionId, string tableName)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = "SELECT TOP 1 Lsn, SeqVal FROM [CdcTools].[ChangeState] WHERE ExecutionId = @ExecutionId AND TableName = @TableName";
command.Parameters.Add("ExecutionId", SqlDbType.VarChar, 50).Value = executionId;
command.Parameters.Add("TableName", SqlDbType.VarChar, 200).Value = tableName;
using (var reader = await command.ExecuteReaderAsync())
{
if(reader.Read())
{
var offset = new Offset();
offset.Lsn = (byte[])reader["Lsn"];
offset.SeqVal = (byte[])reader["SeqVal"];
return new StateResult<Offset>(Result.StateReturned, offset);
}
else
{
var offset = new Offset();
offset.Lsn = new byte[10];
offset.SeqVal = new byte[10];
return new StateResult<Offset>(Result.NoStoredState, offset);
}
}
}
}
19
View Source File : CdcRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<ChangeBatch> GetChangeBatchAsync(TableSchema tableSchema, byte[] fromLsn, byte[] toLsn, int batchSize)
{
var fromStr = BitConverter.ToString(fromLsn);
var toStr = BitConverter.ToString(toLsn);
var batch = new ChangeBatch();
if (!HasValue(fromLsn))
return batch;
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.Parameters.Add("@from_lsn", SqlDbType.Binary, 10).Value = fromLsn;
command.Parameters.Add("@to_lsn", SqlDbType.Binary, 10).Value = toLsn;
command.CommandText = string.Format(@"SELECT TOP {0} *
FROM [cdc].[fn_cdc_get_all_changes_dbo_{1}](@from_lsn, @to_lsn, 'all')
ORDER BY __$seqval", batchSize + 1, tableSchema.TableName);
using (var reader = await command.ExecuteReaderAsync())
{
int ctr = 0;
while (await reader.ReadAsync())
{
ctr++;
if (ctr <= batchSize)
{
var changeRecord = new ChangeRecord();
changeRecord.ChangeType = (ChangeType)(int)reader["__$operation"];
changeRecord.TableName = tableSchema.TableName;
changeRecord.Lsn = (byte[])reader["__$start_lsn"];
var lsn = new BigInteger(changeRecord.Lsn.Reverse().ToArray());
changeRecord.LsnStr = lsn.ToString();
changeRecord.SeqVal = (byte[])reader["__$seqval"];
var seqVal = new BigInteger(changeRecord.SeqVal.Reverse().ToArray());
changeRecord.SeqValStr = seqVal.ToString();
var recordIdSb = new StringBuilder();
foreach (var pkCol in tableSchema.PrimaryKeys.OrderBy(x => x.OrdinalPosition))
{
recordIdSb.Append(reader[pkCol.ColumnName].ToString());
recordIdSb.Append("|");
}
changeRecord.ChangeKey = recordIdSb.ToString();
foreach (var column in tableSchema.Columns)
changeRecord.Data.Add(column.Name.ToLower(), reader[column.Name]);
batch.Changes.Add(changeRecord);
if (ctr == 1)
{
batch.FromLsn = changeRecord.Lsn;
batch.FromSeqVal = changeRecord.SeqVal;
}
if (ctr == batchSize) // not else if as could be batchSzie fo 1
{
batch.ToLsn = changeRecord.Lsn;
batch.ToSeqVal = changeRecord.SeqVal;
}
}
else
{
batch.MoreChanges = true;
var lastLsn = new BigInteger(batch.ToLsn.Reverse().ToArray());
var lsn = new BigInteger(((byte[])reader["__$start_lsn"]).Reverse().ToArray());
if (lastLsn.Equals(lsn))
batch.MoreOfLastTransaction = true;
}
}
}
}
return batch;
}
19
View Source File : TableSchemaRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
private async Task<List<TableColumn>> GetTableColumnsAsync(string tableName)
{
var columns = new List<TableColumn>();
using (var conn = await GetOpenConnectionAsync())
{
using (var command = conn.CreateCommand())
{
command.CommandText = TableSchemaQueryBuilder.GetColumnsOfTableQuery();
command.CommandTimeout = 30;
command.Parameters.Add("TableName", SqlDbType.VarChar).Value = tableName;
using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
var column = GetTableColumn(reader);
if(column.ColumnName.IndexOf("msrepl", StringComparison.OrdinalIgnoreCase) == -1)
columns.Add(column);
}
}
}
}
return columns;
}
19
View Source File : StateManager.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
private async Task InsertStoreTransactionIdAsync(string executionId, TransactionId transactionId)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = @"INSERT INTO [CdcTools].[TransactionState]([ExecutionId],[Lsn],[LastUpdate])
VALUES(@ExecutionId,@Lsn,GETUTCDATE())";
command.Parameters.Add("ExecutionId", SqlDbType.VarChar, 50).Value = executionId;
command.Parameters.Add("Lsn", SqlDbType.Binary, 10).Value = transactionId.Lsn;
await command.ExecuteNonQueryAsync();
}
}
19
View Source File : StateManager.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
private async Task UpdateStoreTransactionIdAsync(string executionId, TransactionId transactionId)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = @"UPDATE [CdcTools].[TransactionState]
SET [Lsn] = @Lsn,
[LastUpdate] = GETUTCDATE()
WHERE ExecutionId = @ExecutionId";
command.Parameters.Add("ExecutionId", SqlDbType.VarChar, 50).Value = executionId;
command.Parameters.Add("Lsn", SqlDbType.Binary, 10).Value = transactionId.Lsn;
await command.ExecuteNonQueryAsync();
}
}
19
View Source File : StateManager.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
private async Task InsertStorePkOffsetAsync(string executionId, string tableName, PrimaryKeyValue pkValue)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = @"INSERT INTO [CdcTools].[FullLoadState]([ExecutionId],[TableName],[PrimaryKeyValue],[LastUpdate])
VALUES(@ExecutionId,@TableName,@PrimaryKeyValue,GETUTCDATE())";
command.Parameters.Add("ExecutionId", SqlDbType.VarChar, 50).Value = executionId;
command.Parameters.Add("TableName", SqlDbType.VarChar, 200).Value = tableName;
command.Parameters.Add("PrimaryKeyValue", SqlDbType.VarChar, -1).Value = JsonConvert.SerializeObject(pkValue);
await command.ExecuteNonQueryAsync();
}
}
19
View Source File : FullLoadRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<long> GetRowCountAsync(TableSchema tableSchema)
{
using (var conn = await GetOpenConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = $"SELECT COUNT(*) FROM {tableSchema.Schema}.{tableSchema.TableName}";
return (int) await command.ExecuteScalarAsync();
}
}
19
View Source File : FullLoadRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<FullLoadBatch> GetFirstBatchAsync(TableSchema tableSchema, int batchSize)
{
var batch = new FullLoadBatch();
batch.TableSchema = tableSchema;
using (var conn = await GetOpenConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = $"SELECT TOP {batchSize} * FROM {tableSchema.Schema}.{tableSchema.TableName} ORDER BY {tableSchema.GetOrderedPrimaryKeyColumns()};";
using (var reader = await command.ExecuteReaderAsync())
{
int ctr = 1;
while (await reader.ReadAsync())
{
var change = new FullLoadRecord();
change.ChangeKey = GetRecordId(reader, tableSchema);
change.BatchSeqNo = ctr;
foreach (var column in tableSchema.Columns)
change.Data.Add(column.Name, reader[column.Name]);
batch.Records.Add(change);
ctr++;
}
}
}
if (batch.Records.Any())
{
batch.FirstRowKey = GetKey(batch.Records.First(), tableSchema);
batch.LastRowKey = GetKey(batch.Records.Last(), tableSchema);
}
return batch;
}
19
View Source File : FullLoadRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<FullLoadBatch> GetBatchAsync(TableSchema tableSchema, PrimaryKeyValue lastRetrievedKey, int batchSize)
{
var batch = new FullLoadBatch();
batch.TableSchema = tableSchema;
using (var conn = await GetOpenConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = TableSchemaQueryBuilder.GetExtractQueryUsingAllKeys(tableSchema, batchSize);
foreach(var pk in tableSchema.PrimaryKeys.OrderBy(x => x.OrdinalPosition))
{
var columnSchema = tableSchema.GetColumn(pk.ColumnName);
var value = lastRetrievedKey.GetValue(pk.OrdinalPosition);
command.Parameters.Add(CreateSqlParameter(columnSchema, "@p"+pk.OrdinalPosition, value));
}
using (var reader = await command.ExecuteReaderAsync())
{
int ctr = 1;
while (await reader.ReadAsync())
{
var change = new FullLoadRecord();
change.ChangeKey = GetRecordId(reader, tableSchema);
change.BatchSeqNo = ctr;
foreach (var column in tableSchema.Columns)
change.Data.Add(column.Name, reader[column.Name]);
batch.Records.Add(change);
ctr++;
}
}
}
if (batch.Records.Any())
{
batch.FirstRowKey = GetKey(batch.Records.First(), tableSchema);
batch.LastRowKey = GetKey(batch.Records.Last(), tableSchema);
}
return batch;
}
19
View Source File : StateManager.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
private async Task UpdateStoreCdcOffsetAsync(string executionId, string tableName, Offset offset)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = @"UPDATE [CdcTools].[ChangeState]
SET [Lsn] = @Lsn,
[SeqVal] = @SeqVal,
[LastUpdate] = GETUTCDATE()
WHERE ExecutionId = @ExecutionId
AND TableName = @TableName";
command.Parameters.Add("ExecutionId", SqlDbType.VarChar, 50).Value = executionId;
command.Parameters.Add("TableName", SqlDbType.VarChar, 200).Value = tableName;
command.Parameters.Add("Lsn", SqlDbType.Binary, 10).Value = offset.Lsn;
command.Parameters.Add("SeqVal", SqlDbType.Binary, 10).Value = offset.SeqVal;
await command.ExecuteNonQueryAsync();
}
}
19
View Source File : StateManager.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
private async Task UpdateStorePkOffsetAsync(string executionId, string tableName, PrimaryKeyValue pkValue)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = @"UPDATE [CdcTools].[FullLoadState]
SET [PrimaryKeyValue] = @PrimaryKeyValue,
[LastUpdate] = GETUTCDATE()
WHERE ExecutionId = @ExecutionId
AND TableName = @TableName";
command.Parameters.Add("ExecutionId", SqlDbType.VarChar, 50).Value = executionId;
command.Parameters.Add("TableName", SqlDbType.VarChar, 200).Value = tableName;
command.Parameters.Add("PrimaryKeyValue", SqlDbType.VarChar, -1).Value = JsonConvert.SerializeObject(pkValue);
await command.ExecuteNonQueryAsync();
}
}
19
View Source File : CdcRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<byte[]> GetMinValidLsnAsync(string tableName)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = string.Format(@"
DECLARE @from_lsn binary (10)
SET @from_lsn = sys.fn_cdc_get_min_lsn('{0}')
IF @from_lsn = 0x00000000000000000000
SET @from_lsn = (SELECT TOP 1 __$start_lsn FROM [cdc].[dbo_{0}_CT] ORDER BY __$start_lsn)
SELECT @from_lsn", tableName);
var result = await command.ExecuteScalarAsync();
if (result != DBNull.Value)
{
var lsn = (byte[])result;
return lsn;
}
}
return new byte[10];
}
19
View Source File : CdcRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<byte[]> GetMaxLsnAsync()
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = "SELECT sys.fn_cdc_get_max_lsn()";
var maxLsn = (byte[])await command.ExecuteScalarAsync();
return maxLsn;
}
}
19
View Source File : CdcRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<ChangeBatch> GetChangeBatchAsync(TableSchema tableSchema, byte[] fromLsn, byte[] fromSeqVal, byte[] toLsn, int batchSize)
{
var batch = new ChangeBatch();
if (!HasValue(fromLsn))
return batch;
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.Parameters.Add("@from_lsn", SqlDbType.Binary, 10).Value = fromLsn;
command.Parameters.Add("@from_seqval", SqlDbType.Binary, 10).Value = fromSeqVal;
command.Parameters.Add("@to_lsn", SqlDbType.Binary, 10).Value = toLsn;
command.CommandText = string.Format(@"SELECT TOP {0} *
FROM [cdc].[fn_cdc_get_all_changes_dbo_{1}](@from_lsn, @to_lsn, 'all')
WHERE __$seqval >= @from_seqval
ORDER BY __$seqval", batchSize + 1, tableSchema.TableName);
using (var reader = await command.ExecuteReaderAsync())
{
int ctr = 0;
while (await reader.ReadAsync())
{
ctr++;
if (ctr <= batchSize)
{
var changeRecord = new ChangeRecord();
changeRecord.ChangeType = (ChangeType)(int)reader["__$operation"];
changeRecord.TableName = tableSchema.TableName;
changeRecord.Lsn = (byte[])reader["__$start_lsn"];
var lsn = new BigInteger(changeRecord.Lsn.Reverse().ToArray());
changeRecord.LsnStr = lsn.ToString();
changeRecord.SeqVal = (byte[])reader["__$seqval"];
var seqVal = new BigInteger(changeRecord.SeqVal.Reverse().ToArray());
changeRecord.SeqValStr = seqVal.ToString();
var recordIdSb = new StringBuilder();
foreach (var pkCol in tableSchema.PrimaryKeys.OrderBy(x => x.OrdinalPosition))
{
recordIdSb.Append(reader[pkCol.ColumnName].ToString());
recordIdSb.Append("|");
}
changeRecord.ChangeKey = recordIdSb.ToString();
foreach (var column in tableSchema.Columns)
changeRecord.Data.Add(column.Name.ToLower(), reader[column.Name]);
batch.Changes.Add(changeRecord);
if (ctr == 1)
{
batch.FromLsn = changeRecord.Lsn;
batch.FromSeqVal = changeRecord.SeqVal;
}
else
{
batch.ToLsn = changeRecord.Lsn;
batch.ToSeqVal = changeRecord.SeqVal;
}
}
else
{
batch.MoreChanges = true;
var lastLsn = new BigInteger(batch.ToLsn.Reverse().ToArray());
var lsn = new BigInteger(((byte[])reader["__$start_lsn"]).Reverse().ToArray());
if (lastLsn.Equals(lsn))
batch.MoreOfLastTransaction = true;
}
}
}
}
return batch;
}
19
View Source File : QueueManager.cs
License : MIT License
Project Creator : Vanlightly
License : MIT License
Project Creator : Vanlightly
private static void InsertQueueSql(string resourceGroup, string queueName)
{
using (var conn = new SqlConnection(ConnStr))
{
conn.Open();
var command = conn.CreateCommand();
command.CommandText = $"INSERT INTO RBR.Resources(ResourceGroup, ResourceName) VALUES(@ResourceGroup, @ResourceName)";
command.Parameters.Add("ResourceGroup", SqlDbType.VarChar, 100).Value = resourceGroup;
command.Parameters.Add("ResourceName", SqlDbType.VarChar, 1000).Value = queueName;
command.ExecuteNonQuery();
}
}
19
View Source File : StateManager.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
private async Task InsertStoreCdcOffsetAsync(string executionId, string tableName, Offset offset)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = @"INSERT INTO [CdcTools].[ChangeState]([ExecutionId],[TableName],[Lsn],[SeqVal],[LastUpdate])
VALUES(@ExecutionId,@TableName,@Lsn,@SeqVal,GETUTCDATE())";
command.Parameters.Add("ExecutionId", SqlDbType.VarChar, 50).Value = executionId;
command.Parameters.Add("TableName", SqlDbType.VarChar, 200).Value = tableName;
command.Parameters.Add("Lsn", SqlDbType.Binary, 10).Value = offset.Lsn;
command.Parameters.Add("SeqVal", SqlDbType.Binary, 10).Value = offset.SeqVal;
await command.ExecuteNonQueryAsync();
}
}
19
View Source File : StateManager.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<StateResult<PrimaryKeyValue>> GetLastPkOffsetAsync(string executionId, string tableName)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = "SELECT TOP 1 PrimaryKeyValue FROM [CdcTools].[FullLoadState] WHERE ExecutionId = @ExecutionId AND TableName = @TableName";
command.Parameters.Add("ExecutionId", SqlDbType.VarChar, 50).Value = executionId;
command.Parameters.Add("TableName", SqlDbType.VarChar, 200).Value = tableName;
using (var reader = await command.ExecuteReaderAsync())
{
if (reader.Read())
{
var json = reader["PrimaryKeyValue"].ToString();
var pkValue = JsonConvert.DeserializeObject<PrimaryKeyValue>(json);
return new StateResult<PrimaryKeyValue>(Result.StateReturned, pkValue);
}
else
{
return new StateResult<PrimaryKeyValue>(Result.NoStoredState, null);
}
}
}
}
19
View Source File : TableSchemaRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
private async Task<List<TablePrimaryKey>> GetTablePrimaryKeysAsync()
{
var primaryKeys = new List<TablePrimaryKey>();
using (var conn = await GetOpenConnectionAsync())
{
using (var command = conn.CreateCommand())
{
command.CommandText = TableSchemaQueryBuilder.GetPrimaryKeysQuery;
command.CommandTimeout = 30;
using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
var pk = GetPrimaryKey(reader);
primaryKeys.Add(pk);
}
}
}
}
return primaryKeys;
}
19
View Source File : TableSchemaRepository.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
private async Task<List<TablePrimaryKey>> GetTablePrimaryKeysAsync(string tableName)
{
var primaryKeys = new List<TablePrimaryKey>();
using (var conn = await GetOpenConnectionAsync())
{
using (var command = conn.CreateCommand())
{
command.CommandText = TableSchemaQueryBuilder.GetPrimaryKeyColumnsOfTableQuery();
command.CommandTimeout = 30;
command.Parameters.Add("TableName", SqlDbType.VarChar).Value = tableName;
using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
var pk = GetPrimaryKey(reader);
primaryKeys.Add(pk);
}
}
}
}
return primaryKeys;
}
19
View Source File : StateManager.cs
License : GNU General Public License v3.0
Project Creator : Vanlightly
License : GNU General Public License v3.0
Project Creator : Vanlightly
public async Task<StateResult<TransactionId>> GetLastTransactionIdAsync(string executionId)
{
using (var conn = await GetConnectionAsync())
{
var command = conn.CreateCommand();
command.CommandText = "SELECT TOP 1 Lsn FROM [CdcTools].[TransactionState] WHERE ExecutionId = @ExecutionId";
command.Parameters.Add("ExecutionId", SqlDbType.VarChar, 50).Value = executionId;
using (var reader = await command.ExecuteReaderAsync())
{
if(reader.Read())
{
var lsn = (byte[])reader["Lsn"];
var lsnInt = new BigInteger(lsn.Reverse().ToArray());
var lsnStr = lsnInt.ToString();
var id = new TransactionId(lsn, lsnStr, lsnInt);
return new StateResult<TransactionId>(Result.TransactionIdReturned, id);
}
else
{
var lsn = new byte[10];
var lsnInt = 0;
var lsnStr = "0";
var id = new TransactionId(lsn, lsnStr, lsnInt);
return new StateResult<TransactionId>(Result.NoStoredTransationId, id);
}
}
}
}
19
View Source File : QueueManager.cs
License : MIT License
Project Creator : Vanlightly
License : MIT License
Project Creator : Vanlightly
public static void EnsureResourceGroup(string resourceGroup, int leaseExpirySeconds)
{
bool rgExists = false;
using (var conn = new SqlConnection(ConnStr))
{
conn.Open();
var command = conn.CreateCommand();
command.CommandText = "SELECT COUNT(*) FROM RBR.ResourceGroups WHERE ResourceGroup = @ResourceGroup";
command.Parameters.Add("ResourceGroup", SqlDbType.VarChar, 100).Value = resourceGroup;
int count = (int)command.ExecuteScalar();
rgExists = count == 1;
if (!rgExists)
{
command.Parameters.Clear();
command.CommandText = $"INSERT INTO RBR.ResourceGroups(ResourceGroup, FencingToken, LeaseExpirySeconds) VALUES(@ResourceGroup, 1, @LeaseExpirySeconds)";
command.Parameters.Add("ResourceGroup", SqlDbType.VarChar, 100).Value = resourceGroup;
command.Parameters.Add("LeaseExpirySeconds", SqlDbType.Int).Value = leaseExpirySeconds;
command.ExecuteNonQuery();
Console.WriteLine("Created consumer group");
}
else
{
command.Parameters.Clear();
command.CommandText = $"UPDATE RBR.ResourceGroups SET LeaseExpirySeconds = @LeaseExpirySeconds WHERE ResourceGroup = @ResourceGroup";
command.Parameters.Add("ResourceGroup", SqlDbType.VarChar, 100).Value = resourceGroup;
command.Parameters.Add("LeaseExpirySeconds", SqlDbType.Int).Value = leaseExpirySeconds;
command.ExecuteNonQuery();
Console.WriteLine("Consumer group exists");
}
}
}
19
View Source File : LeaseService.cs
License : MIT License
Project Creator : Vanlightly
License : MIT License
Project Creator : Vanlightly
public async Task RelinquishLeaseAsync(RelinquishLeaseRequest relinquishLeaseRequest)
{
using (var conn = new SqlConnection(this.connectionString))
{
await conn.OpenAsync();
var command = conn.CreateCommand();
command.CommandText = @"UPDATE [RBR].[ResourceGroups]
SET [CoordinatorId] = NULL
WHERE ResourceGroup = @ResourceGroup
AND [CoordinatorId] = @ClientId
AND [FencingToken] = @FencingToken";
command.Parameters.Add("@ResourceGroup", SqlDbType.VarChar, 100).Value = relinquishLeaseRequest.ResourceGroup;
command.Parameters.AddWithValue("@ClientId", relinquishLeaseRequest.ClientId);
command.Parameters.AddWithValue("@FencingToken", relinquishLeaseRequest.FencingToken);
await command.ExecuteNonQueryAsync();
}
}
19
View Source File : QueueManager.cs
License : MIT License
Project Creator : Vanlightly
License : MIT License
Project Creator : Vanlightly
private static List<string> GetQueuesFromSqlServer(string resourceGroup)
{
var queues = new List<string>();
using (var conn = new SqlConnection(ConnStr))
{
conn.Open();
var command = conn.CreateCommand();
command.CommandText = "SELECT ResourceName FROM RBR.Resources WHERE ResourceGroup = @ResourceGroup";
command.Parameters.Add("ResourceGroup", SqlDbType.VarChar, 100).Value = resourceGroup;
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
queues.Add(reader.GetString(0));
}
}
}
return queues;
}
19
View Source File : QueueManager.cs
License : MIT License
Project Creator : Vanlightly
License : MIT License
Project Creator : Vanlightly
private static void DeleteQueueSql(string resourceGroup, string queueName)
{
using (var conn = new SqlConnection(ConnStr))
{
conn.Open();
var command = conn.CreateCommand();
command.CommandText = $"DELETE FROM RBR.Resources WHERE ResourceGroup = @ResourceGroup AND ResourceName = @ResourceName";
command.Parameters.Add("ResourceGroup", SqlDbType.VarChar, 100).Value = resourceGroup;
command.Parameters.Add("ResourceName", SqlDbType.VarChar, 1000).Value = queueName;
command.ExecuteNonQuery();
}
}
19
View Source File : ResourceService.cs
License : MIT License
Project Creator : Vanlightly
License : MIT License
Project Creator : Vanlightly
public async Task<List<string>> GetResourcesAsync(string resourceGroup)
{
var resources = new List<string>();
using (var conn = new SqlConnection(this.connectionString))
{
await conn.OpenAsync();
var command = conn.CreateCommand();
command.CommandText = "SELECT ResourceName FROM [RBR].[Resources] WHERE ResourceGroup = @ResourceGroup";
command.Parameters.Add("@ResourceGroup", SqlDbType.VarChar, 100).Value = resourceGroup;
using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
resources.Add(reader.GetString(0));
}
}
return resources;
}
19
View Source File : MsSqlClient.cs
License : MIT License
Project Creator : yusufsahinhamza
License : MIT License
Project Creator : yusufsahinhamza
internal SqlCommand getNewCommand()
{
return this.connection.CreateCommand();
}
See More Examples