When trying to use TPT to stream data from SQL Server we're running into the following error.

'The user does not have CREATE MACRO access to database TargetDatabase'.

The TargetDatabase in this case is different from the WorkingDatabase below. My understanding is that the default macro database is the restart table database which is the working database. If the working database is defined then the logs and error tables should be qualified.

So does the target database need create macro access for the user when the working database has been defined? We can set the MacroDatabase attribute, but I didn't think it was necessary.

Thank you for your help. This is TPT 15. The database version is 14.10. Below is the stream operator we are using.

The documentation says "the default macro database is the restart log table database" which I believe is the working database correct?

We had the working database set, however the CREATE MACRO access error occured on another database. If I can remember correctly this database was the database which held the table we were loading into.

That being said, we were able to get around the issue by adding the MacroDatabase attribute and setting it to the same database as the working database. This worked for what we were trying to do.

The restart log table database is not the working database (thus the confusion).

The behavior comes from the old TPump utility, whose restart log table name was specified prior to the .logon command. And it was handled before any SQL statements (including the DATABASE command) were executed.

When developing the Stream operator, we had to keep the same functionality as TPump so that customers moving from TPump to Stream would not encounter different behavior.