geometry -> geography 変換 なのですが、関数が用意されているわけではないので、
自分で作成する必要があります。

基本的に平面座標を球体に変換しているので、
いろいろ制約があり、変換できないケースもあります。

変換の方法は
2通りの方法があります。

(1)Well-Known Text (WKT) 表現 を用いて、 Geometry 型データを、 Geography に変換
(2)Well-Known Binary (WKB) 表現 を用いて、 Geometry 型データを、 Geography に変換



サンプルテーブル
CREATE TABLE Heimen (id  int, geom geometry);
CREATE TABLE Kyuu   (id int, geog geography);

(1) のサンプル
INSERT INTO Kyuu  
 SELECT
  Heimen.id,
  GEOGRAPHY::STGeomFromText(Heimen.geom.STAsText(),4326)
 FROM Heimen;

(2) のサンプル
INSERT INTO Kyuu  
 SELECT
  Heimen.id,
  GEOGRAPHY::STGeomFromWKB(Heimen.geom.STAsBinary(),4326)  
 FROM Heimen;

なお4326は、SRID(spatial reference identifier)です。
SRIDが異なる場合、空間データを扱うメソッドはNULLが返ってきます。


それぞれの肝になるメソッドの説明
 

STAsText() : geometry インスタンスのOpen Geospatial Consortium (OGC)

       Well-Known Text (WKT) 表現を返します

STGeomFromText() : WKT 表現を基に geography インスタンスを返す

 

STAsBinary() : geometry インスタンスの Open Geospatial Consortium (OGC)
       Well-Known Binary (WKB) 表現を返します

STGeomFromWKB() : WKB 表現を基に geography インスタンスを返す

 

エラーサンプル
たとえば、このようなエラーになることがあります。
ユーザー定義のルーチンまたは集計 "geography" を実行中に .NET Framework エラーが発生しました:
System.ArgumentException: 24200: The specified input does not represent a valid geography instance.
System.ArgumentException:
   at Microsoft.SqlServer.Types.SqlGeography.ConstructGeographyFromUserInput(GeoData g, Int32 srid)
   at Microsoft.SqlServer.Types.SqlGeography.GeographyFromBinary(OpenGisType type, SqlBytes binary, Int32 srid)
   at Microsoft.SqlServer.Types.SqlGeography.STGeomFromWKB(SqlBytes wkbGeometry, Int32 srid)

対策が分かりづらいですが、geographyをあらわす線の書き方に問題があって、時計回りにつながってないと
だめっぽいですが、その部分で問題があった場合このエラーになります。
あとは、線がクロスしてるような図形もだめっぽいです。
対策としては、元のGeometryをいじって、こうならないようにする・・・くらいですかね。。