Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi Sir,
Customer has a situation that they upgraded QR to version 2021_5, and they've installed TD client driver 17.10, then reboot the QR server after installing the driver. But, when they tried to connect to TD 17.10, the error message showed up.
How can we fix it? Please tell us.
>> They use the same Teradata database, but they want to connect separately using different DB schema, therefore they have set up 50 endpoints.
50 endpoints implies 50+ tasks.
That's a lot of resource both on the Replicate server as well as the Teradata source.
It's a lot of 'things' to manage, monitor, worry about and as you found out a lot of things to change if a generic change needs to be made as you found out.
Just like John asks, Do all the endpoints have unique usernames?
If so, why? For ease of (table selection) use or security? Security is not a great reason because of folks can create their own tasks, then can just create one with someone else's username.
Would it not be possible to use a single superuser and select the table owner in the tasks?
Would it not be possible to use fewer or a single task and let it take care of tables from multiple owners?
When they changed the system environment variable did they bounce the Replicate service? It needs a change to re-read the new values!
Anyway, if I needed to add an internal parameter to 50 endpoints then I would
1) repctl -d xxx exportrepository
2) copy replication_defintions.json to replicate_endpoint_definitions_yyyymmdd.json
3) find a good editor like notepad++ (or use mone of my modfy_json perl/powerpoint scripts)
4) to reduce chances of potential (future) mistakes remove all sections except 'databases'
---> error_behavior, notifications, replication_environment, scheduler, tasks
5) bulk replace a tardata source unique line ( "$type": "TeradatasourceSettings", )
with two lines, the first and the new one ( "driver": "Teradata Database ODBC Driver 17.10", )
6) repctl -d xxx importrepository json_file = eplicate_endpoint_definitions_yyyymmdd.json
'test' endpoint.
All of this in DEV first of course 🙂
btw... John, you wrote 'provide', are you sure that is valid? should it not be "driver" ?
Cheers,
Hein
Dear @judian_lin ,
If I'm correct you are running Replicate on Windows platform. Can you add TD installation directory to the system PATH environment and restart the service again.
Another factor is using the internal parameter "provide" and set its value to corresponding driver name eg:
Teradata Database ODBC Driver 17.10
Let me know if you need any additional information.
Regards,
John.
Dear @john_wang ,
Customer has tried both of the ways you mentioned, the first way did not work for them but the other one works.
Although the problem was solved, customer still wants to know why the two ways cannot be found in User Guide.
And, why do they need to set the internal parameter in the version? Does it mean that all the later version need to conduct the step?
Please tell us.
Thanks and regards,
Judian
Dear @judian_lin ,
That's because the default driver/provide version in Replicate is other version. In 2021.5 the default Teradata ODBC Driver version is 16.x and 15.x. if you use non-default version then specify it by Internal Parameter.
Certainly if Replicate (eg higher versions) change its default version to 17.x then the Internal Parameter is unnecessary anymore.
Feel free to let me know if you need any additional assistance.
Regards,
John.
Dear @john_wang ,
I got it. Besides, customer has up to 50 endpoint which all are connecting to Teradata. Since setting system PATH does not work, is any way can be set for all the endpoints by once rather than setting the internal parameter one by one?
Thanks,
Judian.
Dear @judian_lin ,
Are you meaning the 50 endpoints connect to different Teradata databases?
If yes you can use export/import utility. Otherwise different tasks can share the same endpoint definition.
Regards,
John.
Dear @john_wang ,
They use the same Teradata database, but they want to connect separately using different DB schema, therefore they have set up 50 endpoints.
So, can I understand that they still need to set the internal parameter one by one?
Thanks,
Judian.
Dear @judian_lin ,
are you meaning the parameter "Default database" in the Teradata endpoint setting? or you are saying different user name ? let me know what's the exact meaning of "different DB schema". we may have other options.
Regards,
John.
>> They use the same Teradata database, but they want to connect separately using different DB schema, therefore they have set up 50 endpoints.
50 endpoints implies 50+ tasks.
That's a lot of resource both on the Replicate server as well as the Teradata source.
It's a lot of 'things' to manage, monitor, worry about and as you found out a lot of things to change if a generic change needs to be made as you found out.
Just like John asks, Do all the endpoints have unique usernames?
If so, why? For ease of (table selection) use or security? Security is not a great reason because of folks can create their own tasks, then can just create one with someone else's username.
Would it not be possible to use a single superuser and select the table owner in the tasks?
Would it not be possible to use fewer or a single task and let it take care of tables from multiple owners?
When they changed the system environment variable did they bounce the Replicate service? It needs a change to re-read the new values!
Anyway, if I needed to add an internal parameter to 50 endpoints then I would
1) repctl -d xxx exportrepository
2) copy replication_defintions.json to replicate_endpoint_definitions_yyyymmdd.json
3) find a good editor like notepad++ (or use mone of my modfy_json perl/powerpoint scripts)
4) to reduce chances of potential (future) mistakes remove all sections except 'databases'
---> error_behavior, notifications, replication_environment, scheduler, tasks
5) bulk replace a tardata source unique line ( "$type": "TeradatasourceSettings", )
with two lines, the first and the new one ( "driver": "Teradata Database ODBC Driver 17.10", )
6) repctl -d xxx importrepository json_file = eplicate_endpoint_definitions_yyyymmdd.json
'test' endpoint.
All of this in DEV first of course 🙂
btw... John, you wrote 'provide', are you sure that is valid? should it not be "driver" ?
Cheers,
Hein