MSDatashape не рекомендуется - PullRequest
       36

MSDatashape не рекомендуется

0 голосов
/ 09 октября 2018

В следующей документации Microsoft: -

https://docs.microsoft.com/en-us/sql/ado/guide/appendixes/microsoft-data-shaping-service-for-ole-db-ado-service-provider?view=sql-server-2017

эта функция удалена, и предлагается использовать XML.Кто-нибудь делал это?Мне интересно, что они означают, с точки зрения загрузки структуры MSDataShape с использованием XML или просто для использования объектов XML?

TIA

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Это мой фрагмент кода, который полезен.Мой код MSDataShape все еще работает, поэтому я предлагаю использовать его для генерации вашего XML в качестве шаблона, а затем использовать его для загрузки: -

Dim objShapeMaker   As clsShapeMaker
Dim rsoTemp         As ADODB.Recordset
Dim strXMLTemplate  As String

' Template file
strXMLTemplate = "C:\Temp\Template_GI.xml"

' Create the MSDataShape and save it to XML
Set rsoTemp = objShapeMaker.CreateGI()
rsoTemp.Save strXMLTemplate, adPersistXML

' Now we have the XML in a file going forward, load it in my recordset
Set rsoTemp = New ADODB.Recordset
rsoTemp.Open strXMLTemplate, , , , adCmdFile

' Cleanup
Set rsoTemp = Nothing
Set objShapeMaker = Nothing

Если вам не нравится идея генерирования шаблона XMLфайлы для обслуживания, вы можете сделать это через .NET и предоставить его COM для использования в вашем приложении VB6 / VBA, как упоминалось здесь .

Я создал приложение .NET, которое может генерироватьэти XML-файлы из простых строк кода, если кому-то захочется продвинуться вперед, аналогично перечисленному блогу, однако он обрабатывает дочерние наборы записей со связями.

EDIT 1 : Это прекрасно работает, если у вас есть схеманастройки без возврата данных.Насколько я могу судить, для их эффективного заполнения лучше написать код, который сначала загружает структуру, а затем заполнять ее из отдельных наборов записей (что медленнее!)

РЕДАКТИРОВАТЬ 2 : Это подход, который мы используем с заменой в .NET Interop.Первоначально рассматривал возможность извлечения XML из SQL и его синтаксического анализа при необходимости.Это может быть выкуплено обратно в DataSet и также проанализировано в целевом наборе записей, но тогда связь между таблицами в результирующем наборе данных должна быть установлена ​​в коде, а не в одном месте в T-SQL с выводом XML.

0 голосов
/ 04 ноября 2018

Я полагаю, что это относится к предложению FOR XML в T-SQL, которое выполняет почти ту же работу, что и MSDataShape, так как возвращает иерархически вложенные данные.

Переносит ваши запросы MSDataShape.на FOR XML запросов и измените клиент для анализа результатов вместо использования поставщика OLEDB MSDataShape.

На стороне клиента SAX или разбор запросов лучше всего подходят для кода порта, который ранее использовал MSDataShape (которыйтакже была модель, основанная на перемещении по записям).

...