2017-03-09 2 views
1

TL; DRComment puis-je éviter BIML express citant un pilote ODBC

Je voudrais éviter BIML d'envelopper mon pilote ODBC guillemets quand il crée mon paquet dtsx.

Plus d'info

J'ai un fichier BIML très simple, illustré ci-dessous après l'en-tête code BIML, qui se connecte à Composite Information Server (CIS). Je ne pense pas que la source de données soit importante, mais j'ai pensé inclure au cas où c'est pertinent à la question/problème.

Le pilote CIS ODBC est installé avec le nom de pilote Cisco Information Server 7.0.

Comme ci-dessous, je suis entrée au conducteur nom correctement, mais quand BIML génère le paquet dtsx, il enveloppe guillemets autour du nom, donc, pour une connexion comme ceci:

<OdbcConnection Name="CIS" ConnectionString="Driver={Cisco Information Server 7.0};Server=xxxxxxxxxx;Port=xxxxxxxxxx;Domain=xxxxxxxxxx;dataSource=xxxxxxxxxx;database=src;User=xxxxxxxxxx;Password=xxxxxxxxxx;Encrypt=yes;" /> 

.. .Je fin avec une chaîne de connexion, comme ceci:

Driver={"{Cisco Information Server 7.0}}"};server=xxxxxxxxxx;port=xxxxxxxxxx;domain=xxxxxxxxxx;datasource=xxxxxxxxxx;database=xxxxxxxxxx;user=xxxxxxxxxx;encrypt=yes 

Si je supprime les accolades et utiliser une chaîne de connexion comme ceci:

<OdbcConnection Name="CIS" ConnectionString="Driver=Cisco Information Server 7.0;Server=xxxxxxxxxx;Port=xxxxxxxxxx;Domain=xxxxxxxxxx;dataSource=xxxxxxxxxx;database=src;User=xxxxxxxxxx;Password=xxxxxxxxxx;Encrypt=yes;" /> 

... Je finis toujours avec une chaîne de connexion comme ceci:

Driver={"Cisco Information Server 7.0"};server=xxxxxxxxxx;port=xxxxxxxxxx;domain=xxxxxxxxxx;datasource=xxxxxxxxxx;database=xxxxxxxxxx;user=xxxxxxxxxx;encrypt=yes 

Modifier Juste pour plus de clarté (car il ne figurait pas dans le message original) les citations supplémentaires ajoutées par le compilateur BIML signifie le conducteur est reconnu et exécuter le paquet généré jette cette erreur:

Execute SQL Task: Failed to acquire connection "CIS". Connection may not be configured correctly or you may not have the right permissions on this connection.

avoir une solution de travail (plus d'une solution de contournement) en créant une entrée de registre en double pour le conducteur en HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI, avec le non-alphanumérique les caractères ont été supprimés, puis référencés dans BIML.

Toutefois, j'aimerais savoir s'il existe un moyen d'arrêter les guillemets d'encapsulation du compilateur BIML autour de mon pilote ODBC.

Merci d'avance pour vos suggestions!

Code BIML

<Biml xmlns="http://schemas.varigence.com/biml.xsd"> 
    <Connections> 
     <OdbcConnection Name="CIS" ConnectionString="Driver={Cisco Information Server 7.0};Server=xxxxxxxxxx;Port=xxxxxxxxxx;Domain=xxxxxxxxxx;dataSource=xxxxxxxxxx;database=src;User=xxxxxxxxxx;Password=xxxxxxxxxx;Encrypt=yes;" /> 
    </Connections> 

    <Packages> 
     <Package Name="TestPackage" ConstraintMode="Parallel" ProtectionLevel="EncryptSensitiveWithUserKey" DelayValidation="true"> 

      <Variables> 
       <Variable Name="TestResult" DataType="Int32">0</Variable> 
      </Variables> 

      <Tasks> 
       <ExecuteSQL Name="ConnectionTest" ConnectionName="CIS" ResultSet="SingleRow"> 
        <DirectInput>SELECT COUNT(*) FROM SCHEMA.TABLE</DirectInput> 
        <Results> 
         <Result Name="1" VariableName="User.TestResult" /> 
         <!-- ODBC requires a 1-based param number --> 
        </Results> 
       </ExecuteSQL> 
      </Tasks> 
     </Package> 
    </Packages> 
</Biml> 

Répondre

0

Est-ce que ConnectionString="Driver={{{Cisco Information Server 7.0}}};... résoudre le problème?

je suis tombé sur un autre problème dans BIML où les accolades étaient étendus comme formatteurs et solution is to double up the braces en .net au moins

+0

Merci, @billinkc, d'essayer l'heure de demain matin (UK) et de vous faire part d'un commentaire ou d'une réponse acceptée. – TechSpud

+0

Pas de joie, @billinkc. Entrée BIML 'Driver = {{{Cisco Information Server 7.0}}}' donne une chaîne de connexion 'Driver = {" {{{Cisco Information Server 7.0}}}}}} "}' – TechSpud

0

J'ai une autre solution (au lieu de créer une copie alphanumérique seulement de l'entrée de Registre ODBC) .

@ La réponse de billinkc n'a malheureusement pas aidé, car cela concernait l'accolement d'accolades dans une chaîne C#.

La solution consiste à créer une connexion ODBC ADO.NET, comme ceci:

<AdoNetConnection Name="CISADO" Provider="System.Data.Odbc.OdbcConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ConnectionString="Driver=Cisco Information Server 7.0;Server=xxxxxxxxxx;Port=xxxxxxxxxx;Domain=xxxxxxxxxx;dataSource=xxxxxxxxxx;database=xxxxxxxxxx;User=xxxxxxxxxx;Password=xxxxxxxxxx;Encrypt=yes;" /> 

Pour une raison quelconque, le compilateur BIML « aime » cette chaîne de connexion et ne pas essayer de l'envelopper dans des citations et/ou des accolades.

Je vais laisser la question ouverte, comme j'aimerais vraiment que quelqu'un donne une réponse et une solution pour éviter les citations non désirées & accolades étant ajouté par le compilateur BIML. Cette réponse sera heureusement utile à quelqu'un (et moi!) Dans le futur.