2008-10-14 5 views
1

J'ai un agent planifié qui tente d'accéder à une base de données sur un autre serveur. Quand il s'exécute, j'obtiens une erreur 4063 - Database ... databasename ... n'a pas encore été ouvert.Qu'est-ce qui cause l'erreur 4063 - Base de données ... nom de base de données ... n'a pas encore été ouvert

Les serveurs sont répertoriés dans l'ACL en tant que gestionnaire.

Quelles sont les autres causes possibles de cette erreur?

+0

Avez-vous trouvé une solution? J'ai le même problème et ai vérifié le contrôle d'accès et il semble bien. – invalidsyntax

Répondre

2

Est-ce que l'autre fiducie de serveur, le serveur exécutant l'agent? Vérifiez le document serveur -> Sécurité -> Serveurs approuvés.

+0

Je n'ai pas vérifié cela, mais je le ferai. Merci!! –

0

Il est possible d'obtenir un handle pour une base de données sans l'ouvrir. Si vous essayez d'appeler la plupart des méthodes sans l'ouvrir d'abord, vous obtiendrez cette erreur. L'explication la plus probable est que vous n'avez pas accès à l'ouvrir.

Quel identifiant a signé l'agent? Probablement pas le serveur. L'agent s'exécutera avec l'autorité du signataire de l'agent, c'est donc l'identifiant qui doit figurer dans la liste de contrôle d'accès de la base de données que vous essayez d'ouvrir.

Il y a tout un tas de règles sur la façon dont les agents peuvent fonctionner sous différentes autorités et au nom de différents utilisateurs. Cela peut devenir assez complexe si la situation l'exige. Mais vérifiez que le signataire de l'agent a le droit d'ouvrir la base de données en premier, puis regardez les paramètres "Exécuter pour le compte de".

0

Vérifiez le document de serveur du serveur, où réside la base de données. Dans la section Serveur d'accès, le champ Serveurs approuvés contient-il le nom du serveur sur lequel l'agent s'exécute?

0

Une astuce: imprimer à l'avance et db.Server db.Filepath pour voir exactement ce que vous essayez d'ouvrir.

Questions connexes