views:

1353

answers:

4

When I execute a sql statement like "Select ...", I can only see "...100%" completed...

I want to log the number of rows affected.

How can we do that?

+1  A: 

run your SELECT from within a stored procedure, where you can log the rowcount into a table, or do anything else to record it...

CREATE PROCEDURE SSIS_TaskA
AS

DECLARE @Rows  int

SELECT ... --your select goes here


SELECT @Rows=@@ROWCOUNT

INSERT INTO YourLogTable
        (RunDate,Message)
    VALUES
        (GETDATE(),'Selected '+CONVERT(varchar(10),ISNULL(@Rows,0))+' rows in SSIS_TaskA')

GO
KM
isn't there a less Hackish way
DotDot
I think having SSIS run a query that is _not within_ a stored procedure is a hack. Having SSIS run a procedure allows you to group commands together, which is what you are aking to do.
KM
A: 

When you use a SQL Task for a select most of the time you give as destination a DataSet Object, you can count the number of ligne from the DataSet

Polo
A: 

what if I'm doing an update or an insert and not allowed to use stored procs or functions?

Mr Shoubs
I'm using postgres, the only part of sql server involved is SSIS
Mr Shoubs
A: 

I believe you could leverage a t-sql output clause on your update or insert statement and capture that as an ssis variable....or just drop it into a sql table.

here is an example...its crappy, but it is an example

UPDATE TOP (10) HumanResources.Employee SET VacationHours = VacationHours * 1.25 OUTPUT INSERTED.EmployeeID, DELETED.VacationHours, INSERTED.VacationHours, INSERTED.ModifiedDate INTO @MyTableVar;

You could output @@ROWCOUNT anyplace you need it to be.

Here is output syntax

http://technet.microsoft.com/en-us/library/ms177564.aspx

KevinV