Bulk Insert Task - SQL Server Integration Services (SSIS) (2022)

  • Article
  • 9 minutes to read

Applies to: Bulk Insert Task - SQL Server Integration Services (SSIS) (1) SQL Server (all supported versions) Bulk Insert Task - SQL Server Integration Services (SSIS) (2) SSIS Integration Runtime in Azure Data Factory

The Bulk Insert task provides an efficient way to copy large amounts of data into a SQL Server table or view. For example, suppose your company stores its million-row product list on a mainframe system, but the company's e-commerce system uses SQL Server to populate Web pages. You must update the SQL Server product table nightly with the master product list from the mainframe. To update the table, you save the product list in a tab-delimited format and use the Bulk Insert task to copy the data directly into the SQL Server table.

To ensure high-speed data copying, transformations cannot be performed on the data while it is moving from the source file to the table or view.

Usage Considerations

Before you use the Bulk Insert task, consider the following:

  • The Bulk Insert task can transfer data only from a text file into a SQL Server table or view. To use the Bulk Insert task to transfer data from other database management systems (DBMSs), you must export the data from the source to a text file and then import the data from the text file into a SQL Server table or view.

  • The destination must be a table or view in a SQL Server database. If the destination table or view already contains data, the new data is appended to the existing data when the Bulk Insert task runs. If you want to replace the data, run an Execute SQL task that runs a DELETE or TRUNCATE statement before you run the Bulk Insert task. For more information, see Execute SQL Task.

  • You can use a format file in the Bulk Insert task object. If you have a format file that was created by the bcp utility, you can specify its path in the Bulk Insert task. The Bulk Insert task supports both XML and nonXML format files. For more information about format files, see Format Files for Importing or Exporting Data (SQL Server).

  • Only members of the sysadmin fixed server role can run a package that contains a Bulk Insert task.

Bulk Insert Task with Transactions

If a batch size is not set, the complete bulk copy operation is treated as one transaction. A batch size of 0 indicates that the data is inserted in one batch. If a batch size is set, each batch represents a transaction that is committed when the batch finishes running.

The behavior of the Bulk Insert task, as it relates to transactions, depends on whether the task joins the package transaction. If the Bulk Insert task does not join the package transaction, each error-free batch is committed as a unit before the next batch is tried. If the Bulk Insert task joins the package transaction, error-free batches remain in the transaction at the conclusion of the task. These batches are subject to the commit or rollback operation of the package.

A failure in the Bulk Insert task does not automatically roll back successfully loaded batches; similarly, if the task succeeds, batches are not automatically committed. Commit and rollback operations occur only in response to package and workflow property settings.

Source and Destination

When you specify the location of the text source file, consider the following:

(Video) 10.Bulk insert task in SSIS

  • The server must have permission to access both the file and the destination database.

  • The server runs the Bulk Insert task. Therefore, any format file that the task uses must be located on the server.

  • The source file that the Bulk Insert task loads can be on the same server as the SQL Server database into which data is inserted, or on a remote server. If the file is on a remote server, you must specify the file name using the Universal Naming Convention (UNC) name in the path.

Performance Optimization

To optimize performance, consider the following:

  • If the text file is located on the same computer as the SQL Server database into which data is inserted, the copy operation occurs at an even faster rate because the data is not moved over the network.

  • The Bulk Insert task does not log error-causing rows. If you must capture this information, use the error outputs of data flow components to capture error-causing rows in an exception file.

Custom Log Entries Available on the Bulk Insert Task

The following table lists the custom log entries for the Bulk Insert task. For more information, see Integration Services (SSIS) Logging.

Log entryDescription
BulkInsertTaskBeginIndicates that the bulk insert began.
BulkInsertTaskEndIndicates that the bulk insert finished.
BulkInsertTaskInfosProvides descriptive information about the task.

Bulk Insert Task Configuration

You can configure the Bulk Insert task in the following ways:

  • Specify the OLE DB connection manager to connect to the destination SQL Server database and the table or view into which data is inserted. The Bulk Insert task supports only OLE DB connections for the destination database.

  • Specify the File or Flat File connection manager to access the source file. The Bulk Insert task uses the connection manager only for the location of the source file. The task ignores other options that you select in the connection manager editor.

  • Define the format that is used by the Bulk Insert task, either by using a format file or by defining the column and row delimiters of the source data. If using a format file, specify the File connection manager to access the format file.

  • Specify actions to perform on the destination table or view when the task inserts the data. The options include whether to check constraints, enable identity inserts, keep nulls, fire triggers, or lock the table.

  • Provide information about the batch of data to insert, such as the batch size, the first and last row from the file to insert, the number of insert errors that can occur before the task stops inserting rows, and the names of the columns that will be sorted.

    (Video) SSIS Tutorial Part 108- How to use Bulk Insert Task in SSIS Package

If the Bulk Insert task uses a Flat File connection manager to access the source file, the task does not use the format specified in the Flat File connection manager. Instead, the Bulk Insert task uses either the format specified in a format file, or the values of the RowDelimiter and ColumnDelimiter properties of the task.

You can set properties through SSIS Designer or programmatically.

For more information about the properties that you can set in SSIS Designer, click the following topic:

  • Expressions Page

For more information about how to setthese properties in SSIS Designer, click the following topic:

  • Set the Properties of a Task or Container

Programmatic Configuration of the Bulk Insert Task

For more information about programmatically setting these properties, click the following topic:

  • BulkInsertTask

Set the Properties of a Task or Container

Related Content

Bulk Insert Task Editor (Connection Page)

Use the Connection page of the Bulk Insert Task Editor dialog box to specify the source and destination of the bulk insert operation and the format to use.

To learn about working with bulk inserts, see Bulk Insert Task and Format Files for Importing or Exporting Data (SQL Server).


Select an OLE DB connection manager in the list, or click <New connection...> to create a new connection.

Related Topics: OLE DB Connection Manager

(Video) 50 SSIS Bulk Insert Task | SQL Server Integration Services

Type the name of the destination table or view or select a table or view in the list.

Select the source of the format for the bulk insert. This property has the options listed in the following table.

Use FileSelect a file containing the format specification. Selecting this option displays the dynamic option, FormatFile.
SpecifySpecify the format. Selecting this option displays the dynamic options, RowDelimiter and ColumnDelimiter.

Select a File or Flat File connection manager in the list, or click <New connection...> to create a new connection.

The file location is relative to the SQL Server Database Engine specified in the connection manager for this task. The text file must be accessible by the SQL Server Database Engine either on a local hard drive on the server, or via a share or mapped drive to the SQL Server. The file is not accessed by the SSIS Runtime.

If you access the source file by using a Flat File connection manager, the Bulk Insert task does not use the format specified in the Flat File connection manager. Instead, the Bulk Insert task uses either the format specified in a format file or the values of the RowDelimiter and ColumnDelimiter properties of the task.

Related Topics: File Connection Manager, Flat File Connection Manager

Refresh Tables
Refresh the list of tables and views.

Format Dynamic Options

Format = Use File

Type the path of the format file or click the ellipsis button (...) to locate the format file.

Format = Specify

Specify the row delimiter in the source file. The default value is {CR}{LF}.

Specify the column delimiter in the source file. The default is Tab.

Bulk Insert Task Editor (General Page)

Use the General page of the Bulk Insert Task Editor dialog box to name and describe the Bulk Insert task.


Provide a unique name for the Bulk Insert task. This name is used as the label in the task icon.


Task names must be unique within a package.

(Video) 102 bulk insert task in ssis

Type a description of the Bulk Insert task.

Bulk Insert Task Editor (Options Page)

Use the Options page of the Bulk Insert Task Editor dialog box to set properties for the bulk insert operation. The Bulk Insert task copies large amounts of data into a Microsoft SQL Server table or view.

To learn about working with bulk inserts, see Bulk Insert Task and BULK INSERT (Transact-SQL).


Specify the code page of the data in the data file.

Specify the data-type value to use in the load operation.

Specify the number of rows in a batch. The default is the entire data file. If you set BatchSize to zero, the data is loaded in a single batch.

Specify the last row to copy.

Specify the first row from which to start copying.


Check constraintsSelect to check the table and column constraints.
Keep nullsSelect to retain null values during the bulk insert operation, instead of inserting any default values for empty columns.
Enable identity insertSelect to insert existing values into an identity column.
Table lockSelect to lock the table during the bulk insert.
Fire triggersSelect to fire any insert, update, or delete triggers on the table.

Specify the ORDER BY clause in the bulk insert statement. The column name that you supply must be a valid column in the destination table. The default is false. This means that the data is not sorted by an ORDER BY clause.

Specify the maximum number of errors that can occur before the bulk insert operation is canceled. A value of 0 indicates that an infinite number of errors are allowed.



Does SSIS use bulk insert? ›

Bulk Insert Task is a component of the SSIS toolbox. Bulk Insert Task is specifically used to transfer the File to our Database. Here, I loaded one CSV file into the SQL Server table. Usually, we load this file using the Data Flow Task with the Flat File Source and the OLEDB Destination.

How do you batches add data to SSIS? ›

Let's create a simple logical flow to perform SQL Batch Processing using the SSIS package to complete the task.
  1. Step 1: Set Up the Database.
  2. Step 2: Get a Batch List.
  3. Step 3: Process Batch Loop.
  4. Step 4: Create a Transaction Container.
  5. Step 5: Append Batch.
  6. Step 6: Execute SQL Task.
  7. Step 7: Mark Batch as Processed.
5 May 2022

Is bulk insert faster than BCP? ›

BCP is faster in most cases then BULK Insert.

How do I bulk insert in SQL Server? ›

  1. First, specify the name of the table in the BULK INSERT clause. Note that you can use the fully qualified table name such as database_name. schema_name. table_name .
  2. Second, provide the path to the file in the FROM clause.
  3. Third, use one or more options after the WITH keyword.

What is Bulk insert Task in SSIS? ›

The Bulk Insert task can transfer data only from a text file into a SQL Server table or view. To use the Bulk Insert task to transfer data from other database management systems (DBMSs), you must export the data from the source to a text file and then import the data from the text file into a SQL Server table or view.

Why bulk insert is faster than insert? ›

In case of BULK INSERT, only extent allocations are logged instead of the actual data being inserted. This will provide much better performance than INSERT. The actual advantage, is to reduce the amount of data being logged in the transaction log.

How do you dynamically load files in SSIS? ›

SSIS - Dynamically load csv files into SQL table, then zip with 7-zip and move to archive location
  1. Create a SSIS package.
  2. Create an OLE DB target with your SQL Server.
  3. Create project parameters Sourcepath and Archivepath containing the path to your csv files and the path to your archive destination.

How do I import multiple CSV files into SQL Server using SSIS? ›

Solution :
  1. Create new SSIS Package. ...
  2. Bring Foreach Loop Container to Control Flow Pane and Set Directory=VarSourceFolder as shown below. ...
  3. Bring Data Flow Task inside Foreach Loop Container and open it by double clicking. ...
  4. Drag Derived column Transformation and connect Flat File Source to it.

Which is the fastest data flow task in SSIS? ›

Data Flow Source TypeData Flow Source Configuration SettingsNetwork Speed during Transfer
ADO NET SourceIn TSQL Query used the Hint “Option (10000)”14Mb\sec
OLE DB SourceConfigured the OLE DB Source Connection Manager to use: SQL Server Native Client 11.0100Mb\sec
In TSQL Query used the Hint “Option (10000)”
9 more rows
19 Jun 2013

Can SQL handle 100 million records? ›

Use the SQL Server BCP to export big tables data

This table includes 100 million rows and it's size is about 7.5 GB. In our first testing, we will run the SQL Server BCP with default values in order to export 100 M rows.

How do I make SQL Server inserts faster? ›

You can use the following methods to speed up inserts: If you are inserting many rows from the same client at the same time, use INSERT statements with multiple VALUES lists to insert several rows at a time. This is considerably faster (many times faster in some cases) than using separate single-row INSERT statements.

How do I make my SQL insert faster? ›

To optimize insert speed, combine many small operations into a single large operation. Ideally, you make a single connection, send the data for many new rows at once, and delay all index updates and consistency checking until the very end.

How can I insert more than 1000 rows in SQL Server? ›

A table can store upto 1000 rows in one insert statement. If a user want to insert multiple rows at a time, the following syntax has to written. If a user wants to insert more than 1000 rows, multiple insert statements, bulk insert or derived table must be used.

Can you run multiple insert statements in SQL? ›

If you want to insert more rows than that, you should consider using multiple INSERT statements, BULK INSERT or a derived table. Note that this INSERT multiple rows syntax is only supported in SQL Server 2008 or later. To insert multiple rows returned from a SELECT statement, you use the INSERT INTO SELECT statement.

Can you insert into multiple tables at once SQL? ›

The T-SQL function OUTPUT, which was introduced in 2005, can be used to insert multiple values into multiple tables in a single statement. The output values of each row that was part of an INSERT, UPDATE or DELETE operation are returned by the OUTPUT clause.

How does SQL bulk insert work? ›

BULK INSERT loads data from a data file into a table. This functionality is similar to that provided by the in option of the bcp command; however, the data file is read by the SQL Server process. For a description of the BULK INSERT syntax, see BULK INSERT (Transact-SQL).

Is bulk insert a transaction? ›

BulkInsert doesn't create a transaction by default. If you want to save multiple lists, you will need to handle the transaction in your code.

What permissions are needed for bulk insert? ›

BULK INSERT requires Server Level Permissions and Database level Permissions. At server level, the respective login needs to have ADMINISTER BULK OPERATIONS permission (or be a member of the bulkadmin server role).

Does bulk insert lock table? ›

Why does bulk insert lock the entire table? Specifies that a table-level lock is acquired for the duration of the bulk-import operation. A table can be loaded concurrently by multiple clients if the table has no indexes and TABLOCK is specified.

Does bulk insert fire triggers? ›

Bulk Insert does not fire triggers by default. If you want a bulk insert to fire triggers, you have to specify. Specifies that any insert triggers defined on the destination table execute during the bulk-import operation.

What is batch size in bulk insert? ›

Batch size is the number of records in each batch. The rows in a batch are sent to the server at the end of each batch. The BatchSize property gets or sets the number of records to use in a batch. The following example save bulk data in batches of 1000 rows. context.BulkSaveChanges(options => options.BatchSize = 1000);

How will you create tables dynamically from flat file and load data in SSIS? ›

Scenario: Download Script

You received flat files or text files or csv files in one of the source folder. You need to write an SSIS Package that should read the file columns and create table and load the data from file. Once data is loading move the file to archive folder. The table will be created with name of file.

How do I create a dynamic path in SSIS? ›

Working with flat files dynamically in SSIS package
  1. Create a Script Task in. your SSIS package name it “set folder path”
  2. Use “DirPath” (variable. ...
  3. Use “DestinationPath” as. ...
  4. Write this script in Main() ...
  5. Create a File System Task. ...
  6. Use “DestinationPath” as. ...
  7. Create a File system Task. ...
  8. Use “SourceFilePath”
23 Oct 2009

Does Dynamic import improve performance? ›

Dynamic imports, also known as code splitting, refers to the practice of dividing bundles of JavaScript code into smaller chunks, which are then pieced together and loaded into the runtime of an application as a means to drastically boost site performance.

How do I load multiple Excel spreadsheets into SQL Server table in SSIS package? ›

Create an SSIS package for the data import from multiple Excel files
  1. CREATE TABLE [dbo].[ SSISDataImport](
  2. [EmpID] [int] NULL,
  3. [EmpName] [varchar](50) NULL,
  4. [Source] [nvarchar](50) NULL.
  5. ) ON [PRIMARY]
13 Dec 2019

Which would you use to load multiple files at one time in SSIS? ›

Use a ForEach Loop container to enumerate all your files in the directory; because you have subfolders you must click the "traverse subfolders" option. Next you need to put a Data Flow Task in your ForEach Loop Container. Within the Data Flow Task you need to add a Flat File Source .

How do I import multiple CSV files into SQL Server? ›

  1. Create data import templates.
  2. Create a text file with the list of import templates.
  3. Create a .bat file to run the import job.
  4. Populate the database from CSV files via the command line.
  5. Schedule a bulk insert from the command-line.
20 Jan 2022

Which is the most critical ETL task you implemented using SSIS? ›

Data transformation is the process of extracting required data from a data source and is the most critical SSIS step.

What are the 3 data flow components of SSIS? ›

SQL Server Integration Services provides three different types of data flow components: sources, transformations, and destinations.

How do you improve performance in SSIS? ›

To improve ETL performance you should convert all the numeric columns into the appropriate data type and avoid implicit conversion, which will help the SSIS engine to accommodate more rows in a single buffer.

Is SQL becoming obsolete? ›

SQL will not be replaced for a long time, as it has a number of key benefits: It is very popular among data professionals. Leading tech companies rely on relational databases and SQL. Professionals working with data are used to SQL; it's quite challenging to re-train the workforce to use another tool.

What is the 80/20 Rule SQL? ›

A Pareto chart highlights the most important factors amongst a large number of factors. A social scientist in Italy, Vilfredo Pareto discovered that roughly 20% of the population owned 80% of the wealth.

Why NoSQL is better for big data? ›

NoSQL is a better choice for businesses whose data workloads are more geared toward the rapid processing and analyzing of vast amounts of varied and unstructured data, aka Big Data. Unlike relational databases, NoSQL databases are not bound by the confines of a fixed schema model.

Does indexing improve insert performance? ›

The number of indexes on a table is the most dominant factor for insert performance. The more indexes a table has, the slower the execution becomes. The insert statement is the only operation that cannot directly benefit from indexing because it has no where clause.

Do indexes speed up inserts? ›

If you update a table, the system has to maintain those indexes that are on the columns being updated. So having a lot of indexes can speed up select statements, but slow down inserts, updates, and deletes.

Why inserts are slow in SQL Server? ›

The reason for this is the number of log cache flushes: if you can minimize the log flushes, you can improve performance, but note that there is an upper limit after which "batching" too many inserts into a transaction can be detrimental (law of diminishing returns).

How long does it take to insert 1 million rows in SQL? ›

It takes about 3 mins to insert 1 million rows if I run it in the SQL server and take about 10 mins if I use C# program to connect from my desktop. The tableA has a clustered index with 2 columns. My target is to make the insert as fast as possible (My idea target is within 1 min).

Which query is faster select or insert? ›

SELECT'. Because the 'INSERT … SELECT' inserts data into an existing table, it is slower and requires more resources due to the higher number of logical reads and greater transaction log usage. However, providing the query hint to lock the entire destination table, the two statements perform exactly the same.

Which is more efficient load data insert? ›

LOAD DATA (all forms) is more efficient than INSERT because it loads rows in bulk.

How do you do multiple inserts in SQL? ›

INSERT-SELECT-UNION query to insert multiple records

Thus, we can use INSERT-SELECT-UNION query to insert data into multiple rows of the table. The SQL UNION query helps to select all the data that has been enclosed by the SELECT query through the INSERT statement.

What method can you use to insert more than one row at a time? ›

Excel Insert Row Shortcut

Use Shift+Space. This will select the entire rows. That's it. Excel will add multiple rows of blank data in the selected location.

How do you automate an insert query in SQL? ›

In SSMS Object Explorer, right-click the database. From the right-click menu, go to Tasks >> Generate Scripts... In the Generate and Publish Scripts pop-up window, press Next to choose objects screen. Now, the choose objects screen, choose Select specific database objects and choose the tables you want to script.

Which is faster insert or merge? ›

Answer. Testing with a variety of source row sets against a target with about 6 mio. rows showed a slighty time advance using the merge command. Overall less internal steps are performed in the merge compared to delete/insert.

Which is more efficient to insert data into a table in SQL? ›

Use IMPORT instead of INSERT for bulk-inserts into new tables. To bulk-insert data into a brand new table, the IMPORT statement performs better than INSERT .

How can I insert data from one table into multiple tables? ›

To insert records from multiple tables, use INSERT INTO SELECT statement. Here, we will insert records from 2 tables.

How insert all data into table in SQL? ›

If you want to add data to your SQL table, then you can use the INSERT statement. Here is the basic syntax for adding rows to your SQL table: INSERT INTO table_name (column1, column2, column3,etc) VALUES (value1, value2, value3, etc); The second line of code is where you will add the values for the rows.

What are the pitfalls of SSIS? ›

SSIS memory usage is high and it conflicts with SQL. In case of CPU allocation it also a problematic case when you have more packages to run parallel. You need to ensure that processer allocation between SQL and SSIS is done properly otherwise SQL have upper hand in it and due to that SSIS run very slow.

Is SSIS still relevant 2022? ›

This project may be used for building high performance data integration and workflow solutions, including extraction, transformation, and loading (ETL) operations for data warehousing. Currently the supported target server version starts from SQL Server 2012 up to 2022.

Does SSIS use log4j? ›

This means that hypothetically you can exploit the vulnerability through SSIS in this scenario: Create an SSIS package that ask for an input to the client user. The package must use log4j for logging.

What are the main transformations used in SSIS? ›

Split and Join Transformations

The transformation that merges multiple data sets. The transformation that merges two sorted data sets. The transformation that joins two data sets using a FULL, LEFT, or INNER join. The transformation that looks up values in a reference table using an exact match.

Is SSIS a low code tool? ›

SSIS uses Microsoft Visual Studio and requires lots of lines of complex code, making it a confusing tool for non-developers. Integrate.io, on the other hand, offers a low-code drag-and-drop interface that practically anyone can use, regardless of their coding or data engineering experience.

Is SSIS the best ETL tool? ›

Is SSIS a Good ETL Tool for You? According to many users, SSIS is a great tool for developers and advanced engineers. Users have commented on TrustRadius that it is the "best buddy for skilled SQL developers.

Is SSIS good for ETL? ›

SSIS is part of the Microsoft SQL Server data software, used for many data migration tasks. It is basically an ETL tool that is part of Microsoft's Business Intelligence Suite and is used mainly to achieve data integration. This platform is designed to solve issues related to data integration and workflow applications.

How difficult is SSIS? ›

Time and Hard Work

In fact, learning SSIS will take more time than learning almost any other technology. Why? Integration Services is a software development platform for moving data. Learning it well requires understanding both database technology and software development.

What is SSIS called now? ›

First released with Microsoft SQL Server 2005, SSIS replaced Data Transformation Services, which had been a feature of SQL Server since Version 7.0.
SQL Server Integration Services.
TypeETL Tools
LicenseProprietary commercial software
1 more row

Is SSIS 32 or 64 bit? ›

SSIS packages "run" by getting called from an executable named dtexec.exe .
Running SSIS packages.
SQL Server Version32 bit64 bit (default)
2014C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exeC:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe
3 more rows
24 Feb 2015

Is SQL Server affected by Log4j vulnerability? ›

An attacker can manipulate the SQL by constructing special strings into the content of the logging application input, thereby implementing illegal SQL queries. Log4j is not affected by this vulnerability when configured by default.

Is Log4j still a threat? ›

Additionally, Log4j scanners can be implemented to identify systems that are still vulnerable by the Log4j threat. However, it must not be the only solution, as some of these scanners have reported false positive results. If there are systems which are unpatched, this threat will continue to exist.

What are the 4 basic transformation? ›

Translation, reflection, rotation, and dilation are the 4 types of transformations.

What are the two models of SSIS deployment? ›

Integration Services supports two deployment models, the project deployment model and the legacy package deployment model.

What are the best practices in SSIS? ›

Sunil Gurav
  • When you pulling high volume of data. ...
  • Use SQL statement in the source component. ...
  • Get as many rows as you can into buffer. ...
  • Don't use the default buffer settings. ...
  • Avoid blocking transformations. ...
  • Don't use OLE DB command transformation. ...
  • Effect of rows per batch and maximum insert commit size settings.
23 Jan 2019


1. SSIS||BULK Insert Task!!
2. MSBI - SSIS - Bulk Insert Task
(Maulik Dhandhukia)
3. 05 SSIS Bulk Insert
(Ted on MSSQL)
4. MSBI - SSIS - Bulk Insert Task
(Maulik Dhandhukia)
5. MSBI - SSIS - Pt 1 Using Bulk Insert Task SSIS - Part-59
(Learn MSBI Beginners/Experts Level)
6. MSBI - SSIS - Pt 2 Using Bulk Insert Task SSIS - Part-60
(Learn MSBI Beginners/Experts Level)

Top Articles

Latest Posts

Article information

Author: Chrissy Homenick

Last Updated: 11/30/2022

Views: 5986

Rating: 4.3 / 5 (54 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Chrissy Homenick

Birthday: 2001-10-22

Address: 611 Kuhn Oval, Feltonbury, NY 02783-3818

Phone: +96619177651654

Job: Mining Representative

Hobby: amateur radio, Sculling, Knife making, Gardening, Watching movies, Gunsmithing, Video gaming

Introduction: My name is Chrissy Homenick, I am a tender, funny, determined, tender, glorious, fancy, enthusiastic person who loves writing and wants to share my knowledge and understanding with you.