2013-12-09 3 views
2

Я только что закончил импортировать файлы формы блока переписи в Microsoft SQL Server 2012, и теперь у меня возникают проблемы при попытке использовать некоторые из функций географии (STContains, STWithin, UnionAggregate и т. Д.) Для данных, которые я привез. .prj перед импортом моих .shp-файлов, и я уверен, что это geogrpahy, а не тип геометрии.Как импортировать Microsoft.SqlServer.Types в Microsoft SQL Server 2012?

Это пример, который я пытался, просто проверить его (который идет прямо с сайта MSDN):

DECLARE @g geography; 
DECLARE @h geography; 
SET @g = geography::Parse('CURVEPOLYGON (COMPOUNDCURVE (CIRCULARSTRING (-122.200928 47.454094, -122.810669 47.00648, -122.942505 46.687131, -121.14624 45.786679, -119.119263 46.183634), (-119.119263 46.183634, -119.273071 47.107523, -120.640869 47.569114, -122.200928 47.454094)))'); 
SET @h = geography::Parse('POINT(-121.703796 46.893985)'); 

select @g.stcontains(@h) 

Это ошибка я получаю:

Msg 6506, Level 16, State 10, Line 6 
Could not find method 'stcontains' for type 'Microsoft.SqlServer.Types.SqlGeography' in assembly 'Microsoft.SqlServer.Types' 

Я провел некоторое исследование по этому вопросу, и кажется, что мне нужно установить какую-то функцию добавления. Я проверил папку C:, потому что видел рекомендацию установить ее через Program Files/Microsoft SQL Server/100/SDK/Assemblies/Microsoft.SqlServer.Types.dll, но получил тупик, потому что я не смог найти папку «Assemblies». Я также видел рекомендацию загрузить пакет функций Microsoft SQL Server 2012 (http://www.microsoft.com/en-us/download/details.aspx?id=29065), но я не был уверен, что именно мне нужно, если бы это было даже подходящее место для поиска.

Любая помощь, которую вы можете предложить, была бы весьма признательна. Заранее спасибо.

+0

У меня такая же проблема. У кого-нибудь есть ответ на это? Или кто-нибудь может сообщить об ошибке для Microsoft? Мы запускаем SQL Server 2014 и уровень совместимости с базой данных 120 и все еще получаем ошибку в SSMS, которая «не могла найти метод .STContains для типа Microsoft.SQLServer.Types.SQLGeography в сборке Microsoft.SQLServer.Types« Нужна ли нам установить пакет обновления? пакет функций или что-то еще? И я пробовал разные случаи, например .STContains, .STcontains и .stcontains. Ничего не работает. – Baodad

ответ

1

Для многих моих проектов я создаю папку на уровне проекта (Visual Studio), называемую «библиотеки», где я помещаю DLL такого рода и другие материалы третьей стороны. Я не знаю, стандартная ли это практика, но все, с кем я работаю, сделали это некоторое время, и до этого она хорошо работала в TFS и Subversion.

Во всяком случае, мой сидит в этом каталоге (SQL 2012/Win 7/64 бит ОС):

C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ Shared

Я копирую его из этого каталога в папку библиотеки в моем проекте.

+0

Спасибо за отличный ответ. Я нашел его сидящим в этом каталоге. Где я могу скопировать и вставить его, если я пытаюсь получить доступ к этим функциям в определенной базе данных в SQL? – ultimate8

+1

Я просто перечитаю ваш код, я думаю, вы можете попробовать правильно обсадить.Например, STUnion будет работать, но STunion не будет. Это немного странно, поскольку T-SQL в остальном нечувствителен к регистру. – radpin

+0

Это сработало! Спасибо за вашу помощь, я ценю это. – ultimate8

0

Я столкнулся с той же проблемы работы с SQL Server 2016 LocalDB:

Не удалось найти метод 'STCrosses' для типа 'Microsoft.SqlServer.Types.SqlGeography' в сборке «Microsoft.SqlServer .Types'

это мне потребовалось некоторое время, чтобы понять, что STCrosses для типа геометрии данных, в то время как для географии я должен использовать STIntersects.

Смежные вопросы