2010-09-14 3 views
1

J'ai créé un package SSIS sur mon ordinateur de développement, qui a simplement: 1) Supprime les enregistrements de la table faible dans la base de données. 2) Charge le fichier du système de fichiers dans la table faible de la base de données. 3) Le paquet est appelé à partir d'une page asp.netProblème lors de l'exécution du package SQL Server 2005 SSIS sur le serveur distant

Lorsque je lance le paquet manuellement sur ma machine, cela fonctionne, quand le niveau de protection est EncryptSensitiveWithUserKey. Quand je déploie je change le niveau de protection en 'DontSaveSensitive'.

Quand je lance l'application Web, je reçois cette erreur - « Une erreur OLE DB est survenue le code d'erreur: 0x80040E4D Un enregistrement OLE DB est disponible Source:... "Microsoft SQL Native Client"

.

Malheureusement, je n'ont pas beaucoup accès à l'instance de SQL server 2005 sur le serveur distant pour exécuter manuellement.

Quand je Déployez le package, j'inclure un fichier de configuration XML et comprennent le mot de passe dans la propriété connectionstring.

Aussi j'ai tourné lors de la journalisation, mais ne peut pas voir quoi que ce soit écrit dans le journal des événements ou SQL Server. Quelqu'un peut-il me référer à la table de journalisation à laquelle SSIS écrit? J'ai vérifié dans MSDB. Est-ce que c'est sysdtslog90? Est-ce que quelqu'un peut me donner quelques indications sur ce que je peux utiliser pour résoudre ce problème?

Cordialement

+0

Comment appelez-vous réellement le paquet? – unclepaul84

+0

Il a été appelé à partir d'une page Web asp.net. J'ai déjà eu la possibilité d'appeler le paquet manuellement sur le serveur de base de données distant, car je dois demander l'accès à la boîte pour obtenir un dba pour l'exécuter. – Kojof

Répondre

1

Avez-vous vérifié les autorisations du compte utilisateur qui appelle le package SSIS pour vous assurer qu'ils ont des privilèges adéquats à toutes les tables/ressources impliquées? Le processus de travail ASP.Net est généralement configuré pour s'exécuter sous le compte Service réseau, ou même l'utilisateur sur la page (si l'emprunt d'identité est activé) et ils n'ont pas l'autorité appropriée pour accéder aux tables spécifiées.

+0

Je sais que le compte de la base de données a un accès sysadmin à la base de données de l'application et dans la base de données msdb, Il a également été ajouté à dt_dtsadmin, dt_dtsltdser et dt_dtsoperator, public et db_datareader. J'utilise l'emprunt d'identité pour naviguer sur le site Web et l'utilisateur emprunté par l'utilisateur et le service réseau ont accès à la base de données de l'application et à la base de données msdb. – Kojof

0

Le nom de la table pour la journalisation est sysdtslog90. Ce sera dans la base de données qui correspond à la base de données pour la connexion que vous avez spécifiée dans la journalisation. En outre, vous devez avoir choisi le fournisseur de journalisation Sql Server pour utiliser cette table. Une fois que vous avez suivi cette table et que vous l'avez regardée, vous devriez pouvoir voir les messages qui ont été envoyés lorsque l'application a échoué.

+0

Merci d'avoir précisé cela. La table est vide et j'ai choisi le fournisseur de journalisation du serveur sql. Savez-vous pourquoi le mot de passe de la base de données n'est pas transmis, même si le niveau de protection sur le paquet est 'DontSaveSensitive'. – Kojof

Questions connexes