To convert several rows to unique row in CSV using T-SQL, use the following code:
DECLARE @myList varchar(MAX) SELECT @myList = coalesce(@myList + ',', '') + UserName FROM [User] SELECT @myList
XP for the programmer
To convert several rows to unique row in CSV using T-SQL, use the following code:
DECLARE @myList varchar(MAX) SELECT @myList = coalesce(@myList + ',', '') + UserName FROM [User] SELECT @myList
<binding name="basicHttpBinding_IMyService" maxReceivedMessageSize="63400320"> <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/> </binding><br />
public static DataTable ConvertToDataTable<T>(IList<T> list) { PropertyDescriptorCollection propertyDescriptorCollection = TypeDescriptor.GetProperties(typeof(T)); DataTable table = new DataTable(); for (int i = 0; i < propertyDescriptorCollection.Count; i++) { PropertyDescriptor propertyDescriptor = propertyDescriptorCollection[i]; Type propType = propertyDescriptor.PropertyType; if (propType.IsGenericType && propType.GetGenericTypeDefinition() == typeof(Nullable<>)) { table.Columns.Add(propertyDescriptor.Name, Nullable.GetUnderlyingType(propType)); } else { table.Columns.Add(propertyDescriptor.Name, propType); } } object[] values = new object[propertyDescriptorCollection.Count]; foreach (T listItem in list) { for (int i = 0; i < values.Length; i++) { values[i] = propertyDescriptorCollection[i].GetValue(listItem); } table.Rows.Add(values); } return table; }Then the SqlBulkCopy can be used. In the example the user table is bulk inserted:
DataTable dt = new DataTable(); using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection)) { sqlBulkCopy.ColumnMappings.Add("UserID", "UserID"); sqlBulkCopy.ColumnMappings.Add("UserName", "UserName"); sqlBulkCopy.ColumnMappings.Add("Password", "Password"); sqlBulkCopy.DestinationTableName = "User"; sqlBulkCopy.WriteToServer(dt); } }
RESTORE DATABASE myDatabase WITH RECOVERY
This will allow to recover the former mirror database.
BEGIN TRANSACTION
...
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION
RAISERROR ('Error Description.', 16, 1)
END
COMMIT TRANSACTION
BEGIN TRY
BEGIN TRANSACTION
...
IF @@TRANCOUNT > 0
BEGIN
COMMIT TRANSACTION
END
END TRY
BEGIN CATCH
DECLARE @ErrorMessage VARCHAR(4000)
SET @ErrorMessage = 'Procedure: ' + ISNULL(ERROR_PROCEDURE(), '') + ' Line: ' +
CAST(ERROR_LINE() AS VARCHAR(10)) + ' Message: ' + ERROR_MESSAGE()
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
RAISERROR (@ErrorMessage, 16, 1)
END CATCH;
Another way of doing the same is using SET XACT_ABORT.
I don't recommend using it, but in some temporary scripts it can be useful.SET XACT_ABORT ON BEGIN TRANSACTION .... COMMIT TRANSACTIONNote also that the RAISERROR stament does not honor the XACT_ABORT setting, so if an error occurs there is no automatic rollback even if XACT_ABORT is ON.
<behaviors> <serviceBehaviors> <behavior name="MyServiceBehavior" returnUnknownExceptionsAsFaults="True"> <serviceDebug includeExceptionDetailInFaults="true" /> <dataContractSerializer maxItemsInObjectGraph="2147483647" /> </behavior> </serviceBehaviors> </behaviors>