Utilisation des types de SQL Server en charge de données SSIS
-
26-09-2019 - |
Question
Je suis en train de charger un fichier en utilisant la fonction d'importation de données SQL Server -. Annexant lignes à une table existante
my est créé comme table existante ceci:
CREATE TABLE [dbo].[load](
[Long] [varchar](50) NULL,
[Lat] [varchar](50) NULL,
[Geog] AS ([geography]::STGeomFromText(((('POINT('+[Long])+' ')+[Lat])+')',(4326)))
)
Toutefois, lorsque la charge tente d'exécuter je vois les messages d'erreur suivants. Je crois que la question est autour de la colonne calculée « Geog » comme les charges de données bien quand je prends ceci de la définition de la table.
Erreur 0xC0202009: Flux de données Tâche 1: Code d'erreur SSIS DTS_E_OLEDBERROR. Un erreur OLE DB est produite. Code d'erreur: 0x80004005. Un enregistrement OLE DB est disponible. Source: « Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: « Bien que la lecture de la ligne actuelle de l'hôte, un prématurée en fin de message était rencontré - un flux de données entrant a été interrompue lorsque le serveur devrait voir plus de données. L'hôte programme peut avoir pris fin. Assurer, garantir que vous utilisez un client pris en charge Interface de programmation d'applications (API). ". (Importation SQL Server et Assistant Exportation) Erreur 0xC0209029: Flux de données Tâche 1: SSIS code d'erreur DTS_E_INDUCEDTRANSFORMFAILUREONERROR. La "entrée "Entrée de destination"(47)" a échoué parce que le code d'erreur 0xC020907B eu lieu, et la ligne d'erreur disposition sur « entrée » Destination Entrée « (47) » l'échec sur Erreur. Une erreur est survenue sur le objet spécifié de l'spécifié composant. Il peut y avoir erreur messages postés avant ceci avec plus informations sur l'échec. (SQL Serveur Assistant Importation et Exportation) Erreur 0xc0047022: Flux de données Tâche 1: SSIS code d'erreur DTS_E_PROCESSINPUTFAILED. le Procédé ProcessInput sur le composant "Destination - load_school" (34) a échoué avec le code d'erreur 0xC0209029 tandis que l'entrée de traitement « Destination Entrée »(47). Le composant identifié renvoyé une erreur à partir de la Procédé ProcessInput. L'erreur est spécifique au composant, mais la l'erreur est fatale et provoquera des données Tâche de flux pour arrêter l'exécution. Il peut des messages d'erreur affichés avant cette avec plus d'informations sur la échec. (Importation SQL Server et Assistant Exportation)
La solution
Il semblerait que la présence d'une colonne calculée qui contient le type de géographie dans la définition n'est pas pris en charge (je l'ai essayé avec d'autres types, y compris le type de point et il a bien fonctionné). Cela pourrait être réduit à l'absence de soutien que SSIS a pour les types de données spatiales ou vers le bas à la façon dont les processus SQL Server la colonne calculée lors d'une insertion de lot.
De toute façon je devais créer une solution à mon problème et est venu avec les travaux suivants autour.
Dans mon package SSIS Je commence par la suppression de la colonne calculée qui est à l'origine des problèmes. Ensuite, je lance le processus de chargement de données Puis j'ajouter à nouveau la colonne calculée à la table en utilisant l'instruction ALTER.
Cela fonctionne très bien pour l'instant, même si elle pourrait causer des problèmes avec des données hors ligne lors d'un scénario d'exécution. Cependant, il devrait être assez simple pour résoudre ce problème.
Cela ne signifie pas que je devais créer un package SSIS plus complexe que la simple utilisation simple assistant « Importer des données » fournies par SQL Server, et je me sens encore un peu frustré de voir que je ne sais pas la cause réelle de ma question. Je viens de trouver un moyen de travailler autour d'elle et de progresser. Je serais toujours reconnaissant si quelqu'un pouvait indiquer pourquoi je voyais cet échec.