2010-05-26 7 views
0

J'ai migré un ensemble de bases de données SQL 2000 vers SQL 2008. La plupart fonctionnent correctement, mais certaines procédures stockées sont planifiées et exécutées par des tâches SQL Server Agent qui me posent problème. Un grand nombre de travaux de procédures stockées prévu, mais les procédures stockées qui accèdent à une base de données autres que les bases de données par défaut échouent avec le message suivant:Autorisations de procédure stockées Problème

Exécuté comme utilisateur: XYZ \ yadayada. Le serveur principal: "XYZ \ YadaYada" ne peut pas accéder à la base de données "MyOtherDatabaseOnSameServer" dans le contexte de sécurité actuel. [ÉTAT SQL 08004] (Erreur 619) L'étape a échoué.

Évidemment, j'ai changé les noms pour protéger les coupables.

Le compte est un utilisateur dans toutes les bases de données relavent et est un membre de db_owner, db_datareader et db_datawriter. Lorsque j'exécute ces mêmes procédures à partir d'une fenêtre de requête dans SMS en utilisant les mêmes comptes (j'en ai essayé beaucoup), ils fonctionnent correctement.

Qu'est-ce qui me manque?

Répondre

0

choses que vous pourriez jeter un oeil à:

  • qui est le propriétaire du travail?
  • sous quel utilisateur l'utilisateur sql-agent est-il en cours d'exécution?
+0

Propriétaire du poste est dbo. Le compte de l'agent SQL était Services réseau, mais je l'ai changé pour l'administrateur de domaine pour voir si cela pouvait aider. Il n'a pas. Merci –

0

Cela ressemble au problème de chaînage de propriété de base de données croisée.

Vérifiez que:

  • le serveur SQL permet la propriété croisée base de données enchaînant
  • chaque base de données impliquée a la propriété chaînage croisée base de données est activée.
  • L'utilisateur XYZ \ YadaYada est un utilisateur enregistré de MyOtherDatabaseOnSameServer.
  • Le propriétaire des procédures stockées est le même que le propriétaire des objets stockés dans MyOtherDatabaseOnSameServer.

Espérons que ça aide.

+0

Propriétaire de tous les objets et propriétaire de proc stocké est dbo XYZ \ YadaYada est un utilisateur enregistré de DB Je pensais à la chaîne de propriété cross-base de données et définir l'option sur le serveur. Je ne savais pas sur l'option sur chaque DB. Quand je suis allé pour définir l'option sur DB il est grisé et non réglable. Essayer de comprendre pourquoi. Cela semble être une source possible de problème. Bien que, je ne comprends pas pourquoi cela fonctionnerait bien à partir de la fenêtre de requête SMS. Pensez-vous pour l'entrée, je vais continuer à brancher à cela. –

+0

Vous devrez peut-être exécuter l'instruction RECONFIGURE pour que le serveur prenne en charge la modification de la configuration.Essayez: sp_configure 'cross db ownership chaining', 1; GO RECONFIGURE; GO Si les options au niveau de la base de données sont toujours grisées, essayez de redémarrer l'instance sql (si vous y êtes autorisé) –

0

Lorsque vous avez migré les utilisateurs, avez-vous configuré les utilisateurs à nouveau ou simplement récupéré ce qu'ils avaient de l'opération de restauration/connexion?

Vous devrez peut-être exécuter exec sp_change_users_login 'Auto_Fix', '<username>' sur la base de données en question où <username> est le nom réel de l'utilisateur.

+0

Le compte et les utilisateurs que j'utilise ont été ajoutés après la migration. J'ai essayé de toute façon, mais pas de joie. Merci pour la contribution. –

Questions connexes