This is my first attempt at building a sort of wiki (general one) so please support! :) I am compiling a list of methods that deal with transfering and distributing data. Please do add your thoughts to my list. I'll update the document and re-post for everyone's benefit. If I have missed a method out, please let me know and I will edit it!
- Replication
- BCP/Bulk Insert
- Distributed Queries/Linked Servers
- SSIS
Replication
- Applications require data to be consolidated from one or more servers to a central repository
- Move your reporting functionality off your main SQL Server to a separate SQL Server
- Support a large group of users from multiple servers
- Need to filter rows/columns
BCP/Bulk Insert
I am not very familiar with BCP utility or how it can be helpful in light of other services available. This is where contribution would be helpful! But here is what I can gather:
- BCP: Transfer things very quickly
- Bulk Insert: Useful as a inline T-SQL solution. Can be scheduled. However, data format must be very clean
Distributed Queries/Linked Servers
- Linked servers: Provide access to a wider variety of data sources than SQL Server replication provides
- Linked servers: Connect with data sources that replication does not support or which require ad hoc access
- Linked servers: Perform better than OPENDATASOURCE or OPENROWSET
- OPENDATASOURCE and OPENROWSET functions: Convenient for retrieving data from data sources on an ad hoc basis. OPENROWSET has BULK facilities as well that may/may not require a format file which might be fiddley
- OPENQUERY: Doesn't support variables
- All are T-SQL solutions. Relatively easy to implement and set up
- All are dependent on connection between source and destionation which might affect performance and scalability
SSIS Again I dont have much experience with SSIS. Here is what I know:
- Connection to different databases
What are your experiences and thoughts regards the all the above mentioned methods?