Bonjour,
Tu utilises quelle version de SQL Server (build) ?
Quel est le Owner du job, est-il bien sysadmin ?
Alexis Molteni
Bonjour,
Tu utilises quelle version de SQL Server (build) ?
Quel est le Owner du job, est-il bien sysadmin ?
Alexis Molteni
Bonjour,
voici les informations concernant notre serveur SQL:
Microsoft SQL Server Management Studio 9.00.3042.00
Microsoft Analysis Services Client Tools 2005.090.3042.00
Microsoft Data Access Components (MDAC) 2000.086.3959.00 (srv03_sp2_rtm.070216-1710)
Microsoft MSXML 2.6 3.0 6.0
Microsoft Internet Explorer 6.0.3790.3959
Microsoft .NET Framework 2.0.50727.1433
Operating System 5.2.3790
Le owner du job est sa
Merci et bonne journée
--Samus 535
Pardon pour ma persévérance mais je continue à croire que c'est un problème d'autorisation; en tout cas c'est ce que me laisse penser le message d'erreur.
Es-tu dba (database admin) ? Si oui, peux-tu vérifier que le compte sa est bien
- actif;
- a les autorisations suffisantes pour ouvrir la vue.
Si tu n'es pas dba, peux-tu demander à ton dba de faire ce test ?
Bonjour, avant tout, personne ne l'a demandé, mais est-ce que ton package fonctionne dans Visual Studio ? Ensuite, si tu as plusieurs bases peut-être que tu ne pointes pas sur la bonne. Si tu utilises du code SQL qui fait untu peux aussi essayer de préfixer par le nom de ta base, ce qui donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT .... FROM [dbo].[v_uom]Enfin, si tu n'es pas le premier à faire tourner des jobs exécutant des packages SSIS, ouvre les autres jobs et regarde comment ils sont faits (et qui own le job).
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT ... FROM [ta base].[dbo].[v_uom]
a+, =)
-=Clement=-
Bonjour Clement,
Mon package fonctionne #1 dans Visual Studio. Pour mes vues, j'utilises déjà.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT ... FROM [ta base].[dbo].[v_uom]
Je suis effectivement le premier à faire tourner des jobs exécutant des packages SSIS.
Merci et bonne journée
--Samus535
Quel compte exécute le service SSIS ? Est-ce que ton Package est hébergé sur le système de fichiers où sur le serveur ? Ton étape de job est-elle de type Operating System Command ou celle dédiée aux packages SSIS ?
Si tu est sur le serveur en type exécution de package SSIS, tu peux essayer le type Operating System Command à la place avec le code(ton chemin peut différencier)"C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe" /SQL "\ton_package" /SERVER "ton_instance_base_de_donnees" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING E
a+, =)
-=Clement=-
Mon package est héberger sur le serveur.
Mon étape de job est de type "SQL Server Integration Services Package"
Lorsque j'essaye avec le type "Operating System Command" j'ai un problème de droit. Je me demande où je peux spécifier le user/pass à utiliser lorsque nous utilisons ce type (Operating System Command).
J'ai le message d'erreur suivant:
Merci et bonne journéeExecuted as user: SRVDRUSQL01\SYSTEM. Microsoft (R) SQL Server Execute Package Utility Version 9.00.3042.00 for 32-bit Copyright (C) Microsoft Corp 1984-2005. All rights reserved. Started: 9:14:22 AM Could not load package "\Data" because of error 0xC0014062. Description: The LoadFromSQLServer method has encountered OLE DB error code 0x80040E4D (Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.). The SQL statement that was issued has failed. Source: Started: 9:14:22 AM Finished: 9:14:22 AM Elapsed: 0.125 seconds. Process Exit Code 5. The step failed.
--Samus535
Sur le serveur avec SQL Server 2005 : Démarrer / Programmes / Sql Server 2005 / Configuration Tools / Sql Server Configuration Manager / Sql Server 2005 Services / clic droit sur Sql Server Integration Services / Propriétés / Log On As: (à priori ce sera Network Service (défaut) bien que la best practice soit d'avoir un compte dédié)Quel compte exécute le service SSIS ?
Profites-en pour regarder quel compte fait tourner le service Sql Server Database Engine et Sql Server Agent.SQL Server Agent / clic droit sur le Job / Propriétés / Owner: (ton login Windows ?).qui own le job ?
a+, =)
-=Clement=-
Pour Sql Server Integration Services, c'est bien Network Service qui est entré.
Pour Sql Server Database Engine et Sql Server Agent c'est Local Service
Le owner c'est sa (ce qui n'est pas mon login windows). Est-ce que je devrais mettre mon login Windows à la place ?
Merci beaucoup pour ton aide Clement
--Samus535
Bonjour,
Non, ce n'est pas la peine de changer car il y a peu de chance que ton login Windows ai plus de droits que sa. Par contre cela signifie que tu utilises SQL Server Authentication et non Windows Authentication (recommandé) pour te connecter au serveur SQL. Il faut donc ajouterou s'il n'y a pas de mot de passe/User sa /Password ton_mot_de_passePlus d'infos sur dtexec ici : http://msdn.microsoft.com/en-us/library/ms162810.aspx/User sa
a+, =)
-=Clement=-
Bonjour Clement,
j'ai ajouté le User/pass et j'obtiens l'erreur suivante:
Executed as user: SRVDRUSQL01\SYSTEM. ...9.00.3042.00 for 32-bit Copyright (C) Microsoft Corp 1984-2005. All rights reserved. Started: 8:59:46 AM Error: 2009-02-13 09:00:55.50 Code: 0xC0202009 Source: ERPWarehouse OLE DB Source [1] Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E37. End Error Error: 2009-02-13 09:00:55.50 Code: 0xC02020E8 Source: ERPWarehouse OLE DB Source [1] Description: Opening a rowset for "[dbo].[v_warehouse]" failed. Check that the object exists in the database. End Error Error: 2009-02-13 09:00:55.50 Code: 0xC004706B Source: ERPWarehouse DTS.Pipeline Description: "component "OLE DB Source" (1)" failed validation and returned validation status "VS_ISBROKEN". End Error Error: 2009-02-13 09:00:55.50 Code: 0xC004700C Source: ERPWarehouse DTS.Pipeline Description: One or more component failed validation. End Error Error: 2009-02-13 09:0... Process Exit Code 1. The step failed.
Voici ma ligne de commande:
L'agent s'est exécuter pendant quelques minutes avant de planter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe" /SQL "\Data" /SERVER "srvdrusql01b" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING E /User sa /Password xxxxx /DECRYPT "xxxxx"
Merci et bonne journée
--Samus535
Ok. Maintenant ce n'est pas la même vue, ce qui confirme ce que tu disais plus haut. Dans ce cas j'en déduis que ta source OLE DB est de type SQL Command et je te suggère de couper ta requête en deux et d'utiliser un composant Merge Join pour réaliser une des jointures qu'il ne manquera pas d'y avoir dans ta requête. Crée donc une nouvelle Source OLE DB. De cette façon si tu réussis à isoler une portion de code pour laquelle l'erreur est reproductible tu pourras trouver un diagnostique et une solution. Peux tu confirmer que la Connection OLE DB utilise le compte SQL Server 'sa' dans Visual Studio et que ça marche ?
a+, =)
-=Clement=
Bonjour Clement,
J'ai inclu un print screen de mon SSIS pour que tu puisse voir la structure de mon package. Ma source OLE DB est de type "Table or vue" et elle utilise uen vue qui est sur mon serveur SQL.
Le code qui est dans la vue est le suivant:
le nom SOPREMA_FORM fait référence à un Linked Server qui se connecte à une base de données Progress via un connecteur ODBC.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CREATE view [dbo].[v_warehouse] as select * from [SOPREMA_FORM].[SOPREMAFORM].[PUB].[warehouse]
Je confirme également que j'utilise le compte SQL Server 'sa' dans Visual Studio et que ça marche.
Merci et bonne journée
--Samus535
Ok, il n'y a pas de jointure mais beaucoup de parallèlisme. Dans ce cas, à ta place je mettrai des contraintes de précédence pour les Data Flow Task de ton conteneur Import par exemple, pour éviter de surcharger le canal en connexions simultanées et le moteur en threads, et voir si ça marche mieux, bien sûr.
A voir ton package je me dis aussi que le fait que tu reçoives le message d'erreur sur des vues différentes proviendrait peut-être du fait qu'avec le parallèlisme la première connexion à tenter la validation peut ne pas être la même à chaque exécution.
Par ailleurs le compte Local Service qui utilise un Linked Server je ne suis pas certain que ce soit compatible si le linked server est distant : demande à ce qu'un utilisateur du domaine soit configuré pour les services SQL Server.
a+, =)
-=Clement=-
edit : à bien y penser c'est presque certain que ton problème vient du fait d'utiliser un serveur lié. Dommage de ne pas avoir eu cette info plus tôt !
En tous cas, tu vas au devant de complexes configurations de droits/déléguations/authentification ...
Désolé de ne pas avoir partager l'information que c'était un serveur lié plus tôt .
Je ne comprends pas pourquoi le package fonction très bien et à tout coup à partir de Visual Studio mais qu'il ne fonctionne pas à partir de l'agent.
Puisque le problème semble venir su fait que c'est un serveur lié, est-ce que les contraintes de précédence pourrait aidées quand même ?
Merci beaucoup du coup de main et encore désolé pour les informations manquantes .
--Samus 535
Bonjour,
Tu peux ajouter les contraintes de précédence pour stabiliser l'ordre d'exécution temporairement. Je crois que dans Visual Studio, c'est le compte Windows qui accède au package, le compte de service SSIS qui exécute le package et sa qui accède au serveur lié. Sur le serveur c'est le compte sa qui accède au package, c'est le compte du service SQL Server Agent qui exécute le job et c'est le compte Windows du service SSIS qui exécute le package. Mais pourquoi utiliser un serveur lié et pas une connexion directe à la base dans ton cas ?
a+, =)
-=Clement=-
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager