I have been trying to upgrade SQL server 2017 to run Python 3.7. We have installed CU28 and the product version is 14.0.3430.2 which includes the C:\Program Files\Microsoft SQL Server\MSSQL14.INSTANCENAME\PYTHON_SERVICES.3.7.
I have made sure all permissions are granted to the INSTANCENAME directory and pythonlauncher.config working directory is pointing to C:\Program Files\Microsoft SQL Server\MSSQL14.INSTANCENAME\MSSQL\ExtensibilityData and launchpad service account has permissions to this directory.
I have done all this as an upgrade twice and got various errors, and a clean install. The error I am getting is
Msg 39004, Level 16, State 20, Line 0
A 'Python' script error occurred during execution of 'sp_execute_external_script' with HRESULT 0x80004004.
Msg 39019, Level 16, State 2, Line 0
An external script error occurred:
Invalid BXL stream
error while running BxlServer: caught exception: Error communicating between BxlServer and client: 0x000000e8
HRESULT 0x000000e8 looks like INVALID_CANCEL_OF_FILE_OPEN
HRESULT 0x80004004 looks like E_ABORT
So no real clues what is wrong here. pythonlauncher.log does show the error;
[Error] Process::TryTerminate failed with error code: 5
Session 0E93E9D1-07A7-448A-8B1A-FCA5263A5F53 TryTerminate(1067) failed with 5
Error code 5 is ERROR_ACCESS_DENIED Also got this warning
[Warning] StaleDirectoryCleaner() failed to delete C:\Program Files\Microsoft SQL Server\MSSQL14.INSTANCENAME\MSSQL\ExtensibilityData\FAMSQL17UAT01\8B97815A-E9EA-4FA0-98F3-0440D4180522 after 5 retries
So all up this looks there are still permission issues. Extremely frustrating as there is next to no help on this. Any help would be greatly appreciated.
UPDATE:
After another clean install - first checked Python 3.5.2 worked and it did. Upgraded to 3.7, and again got the same issue. A bit more digging around I find this...
The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/SERVERNAME.domain_name.com:INSTANCENAME ]
Login failed for user 'DOMAIN\SERVERNAME$'. Reason: Could not find a login matching the name provided.
We have a service account that is not part of the domain which is NT Service\MSSQL$INSTANCENAME. Why on this implementation expecting a windows authenticated user the same name as the server??? How can I go about remedy this?
I think what has happened is that MS have left debug code in their production release.
FURTHER UPDATE:
In the event log we are seeing
Faulting application:Python.exe: 3.7.1150.1013 Faulting module name: pylink.pyd Faulting module path:c:\Program Files\Microsoft SQL Server\MSSQL14.INSTANCENAME\PYTHON_SERVICES.3.7\lib\site-packages\revoscalepy\rxLibs\pylink.pyd