いくつかの背景:
2つの異なるVMでSQLServerの2つの異なるインストールを実行しています。コード(SQL Server 2008 R2用に作成されたもの)からそれらに接続しようとしています。私の現在の.NETFrameworkのバージョンは4.0です。私のMicrosoftSQLServer 2008 R2インストールはそのために設計されたAdventureWorksを実行しており、私のSQL Server2012Expressインストールは新しいAdventureWorks2012データベースを実行しています。Person.Addressにクエリを実行しています。
現在、「DataTypeをnullにすることはできません」という例外が発生しています。返されたスキーマを見て、問題はSQLServer2012が
Microsoft.SqlServer.Types.SqlGeography
データ・タイプ。Type.GetTypeはこれを使用可能なものに変換できず、例外をスローするようです。私がやったことは何もないので安心しましたが、このコードは普遍的に機能するはずなので、私も困惑しています。このコードはSQLServer2008 R2で問題なく実行されることに注意してください(空間データ型がないため)。
私はこれを処理するための100の悪い方法を考えることができました。しかし、私はあなたたちに何をすべきかについての提案を求めに来たかったのです。.NETを4.5にアップグレードすると、状況は改善されますか?新しいデータ型に対応するためにコードを変更する必要がありますか?アプリケーションが空間データ型を処理しない場合、空間データ型について心配する必要がありますか?明らかにSqlClientとType.GetTypeはうまく機能しないため、これをどのように処理しますか。
ありがとうございました!