Usei o código que escrevi para você (Armazenando a coluna 'Point' do ShapeFile ) como ponto de partida para obter uma tabela de pontos. De lá:
select geography::STPolyFromText(
'POLYGON((' +
stuff((
select ',' + cast(g.STPointN(t.i).Long as varchar(10)) + ' ' + cast(g.STPointN(t.i).Lat as varchar(10))
from [a]
cross join tally as [t]
where t.i <= g.STNumPoints()
order by i
for xml path('')
), 1, 1, '') + '))'
, 4326)
Este código assume algumas coisas. Primeiro:que seus pontos sejam ordenados como você contornaria a fronteira da região. Isso importa. Pense em um quebra-cabeça de conectar os pontos. Para obter a imagem certa, você deve fazê-los na ordem certa. Em segundo lugar, em relação ao primeiro, eles devem estar na orientação correta. Os polígonos seguem a regra da mão esquerda. Ou seja, se você estivesse percorrendo os pontos em ordem, estaria definindo a região que está à sua esquerda. Então, se você especificar os pontos na ordem inversa, você obtém tudo, menos sua região! Você saberá disso imediatamente, pois antes do SQL 2012, você estava limitado a ter regiões totalmente contidas em um hemisfério.
Mas agora eu tenho que perguntar:dada a pergunta que você fez antes (que eu relacionei acima), você está recebendo shapefiles com polígonos neles? Em caso afirmativo, guarde-o e economize a dor de cabeça de reconstruí-lo.