Microsoft SQL Server 2008+ TIMESTAMP problem
You cannot change default dateformat for all users without changing your language Which you do not want to do in your case.

You can create a new user with a default language which supports the dateformat you need will do the trick in this case. Then your application will need to use that login/user for connecting when doing the insert.

For example my test server and my login is set to following.



SELECT NAME, 
       alias, 
       dateformat 
FROM   syslanguages 
WHERE  langid = (SELECT value 
                 FROM   master..sysconfigures 
                 WHERE  comment = 'default language') 



  name=us_english
  
  alias=English
  
  dateformat=mdy


With your example I get the same error if I try this.

INSERT INTO testDateTimes (id, ts) VALUES (2, '13.05.2017 12:34:56.789')



  Msg 242, Level 16, State 3, Line 15 The conversion of a varchar data
  type to a datetime data type resulted in an out-of-range value. The
  statement has been terminated.


Creating a new login with DEFAULT_LANGUAGE =British

USE [master]
GO
CREATE LOGIN Mary8 WITH PASSWORD = 'A2c3456$#',  
CHECK_EXPIRATION = ON, 
DEFAULT_LANGUAGE =British 
GO
USE [test]
GO
CREATE USER [Mary8] FOR LOGIN [Mary8]
GO
USE [test]
GO
ALTER ROLE [db_owner] ADD MEMBER [Mary8]
GO


Now if I login with Mary8 and run same insert statement it will succeed.

SELECT SUSER_NAME(), USER_NAME();  
GO
INSERT INTO testDateTimes (id, ts) VALUES (2, '13.05.2017 12:34:56.789')
GO



  (1 row(s) affected)


Reference I used.