To get the index partitions onto specific segments try explicitly listing each partition/segment assignment.
In this example I'm placing the data and index partitions on different segments ... you could replace all of the 'isegX' instances with 'dsegX' if you want ...
==================
use testdb
go
exec sp_addsegment dseg15,testdb,datadev
exec sp_addsegment dseg16,testdb,datadev
exec sp_addsegment dseg17,testdb,datadev
exec sp_addsegment iseg15,testdb,datadev
exec sp_addsegment iseg16,testdb,datadev
exec sp_addsegment iseg17,testdb,datadev
go
if object_id('t1') is not NULL
drop table t1
go
create table t1
(id int
,name varchar(30)
,crdate datetime
)
lock datarows
partition by range (crdate)
(dtrange2015q3 values <= ("09/30/2015 23:59:59.999") on dseg15
,dtrange2015q4 values <= ("12/31/2015 23:59:59.999") on dseg15
,dtrange2016q1 values <= ("03/31/2016 23:59:59.999") on dseg16
,dtrange2016q2 values <= ("06/30/2016 23:59:59.999") on dseg16
,dtrange2016q3 values <= ("09/30/2016 23:59:59.999") on dseg16
,dtrange2016q4 values <= ("12/31/2016 23:59:59.999") on dseg16
,dtrange2017q1 values <= ("03/31/2017 23:59:59.999") on dseg17
,dtrange2017q2 values <= ("06/30/2017 23:59:59.999") on dseg17
,dtrange2017q3 values <= ("09/30/2017 23:59:59.999") on dseg17
,dtrange2017q4 values <= ("12/31/2017 23:59:59.999") on dseg17
)
go
create index idx on t1 (crdate, id)
local index
idx2015q3 on iseg15
,idx2015q4 on iseg15
,idx2016q1 on iseg16
,idx2016q2 on iseg16
,idx2016q3 on iseg16
,idx2016q4 on iseg16
,idx2017q1 on iseg17
,idx2017q2 on iseg17
,idx2017q3 on iseg17
,idx2017q4 on iseg17
go
==================