This worked for me:
EXEC master.dbo.sp_addlinkedserver @server = N'TestConnect'
, @srvproduct=N''
, @provider=N'MSDASQL'
, @provstr=N'DRIVER={SQL Server};SERVER=TestConnect;Trusted_Connection=no;'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TestConnect'
, @useself=N'False'
, @locallogin=NULL,@rmtuser=N'ReportReadOnly'
, @rmtpassword='########'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'collation compatible'
, @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'data access'
, @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'dist'
, @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'pub'
, @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'rpc'
, @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'rpc out'
, @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'sub'
, @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'connect timeout'
, @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'collation name'
, @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'lazy schema validation'
, @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'query timeout'
, @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'use remote collation'
, @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'TestConnect'
, @optname=N'remote proc transaction promotion'
, @optvalue=N'true'