Base de données SQL 2005 Indisponible

J'ai déplacé la base de données avec sql 2000 à un nouveau serveur 2005 de l'année. Tout allait bien jusqu'à ce que je suis entré dans le studio Sql Server Management avec un utilisateur spécifique. Il semble que j'ai participé avec succès au système, mais lorsque j'essaie d'élargir la base de données, je reçois le message "La base de données n'est pas disponible". Je peux me connecter avec l'authentification Windows et avec d'autres utilisateurs sql Sans problèmes et tout voir.

J'ai vérifié et j'ai veillé à ce que la base de données ne soit pas en mode utilisateur unique. J'ai aussi vérifié la présence de logines perdues (exec sp_change_users_login 'report'), Et rien n'a été trouvé. L'utilisateur a également les droits à la base de données.

Toute aide dans les instructions pour moi, la bonne direction sera acceptée avec gratitude.
Invité:

Alice

Confirmation de:

Très probablement, il s'agit d'un problème d'autorisations sur un nouveau serveur. Vos connexions SQL non toléré automatiquement, et si vous le créez manuellement sur un nouveau serveur, il recevra un autre SID, Qui ne correspondra pas à celui qui a accès à la base de données.

La meilleure voie - c'est
http://support.microsoft.com/kb/918992
(KB918992 Si le lien sera jamais interrompu), Pour générer le script de connexion sur l'ancien serveur, puis démarrez le script sur le nouveau serveur. Cette procédure reportera des informations sur SID Et le mot de passe sur le nouveau serveur, recréant efficacement la connexion sur un nouveau serveur. Dès ce qui est fait, les autorisations configurées dans votre base de données doivent être synchronisées avec le login (un m.) Sur un nouveau serveur.

Cela ne devrait pas être un problème d'entrer dans Windows, dans la mesure où SQL Obtient SID de Windows, Bien que vous ayez encore besoin de configurer l'entrée de Windows Sur un nouveau serveur. sp_help_revlogin Effectuez également cette partie pour vous.

Alice

Confirmation de:

Merci pour des réponses! Après quelque temps, j'ai supprimé l'utilisateur de la base de données et j'ai recréé, ce qui a fonctionné! J'ai supprimé l'utilisateur et le recréé avant, mais avant de le faire au niveau du serveur, et non au niveau de la base de données. Dès que j'ai supprimé l'utilisateur de la base de données et que j'ai recréé, tout a fonctionné. Merci encore pour votre aide!

Blanche

Confirmation de:

Vous n'aurez pas de problèmes avec l'entrée du système basé sur Windows, Depuis qu'ils ne sont pas liés aux bases de données SID. C'est le cas avec les entrées du système. SQL, Depuis donné qu'il arrive vraiment "Osset". Il est préférable d'utiliser sp_help_revlogin Comme adressé (De manière proactive) Ou utiliser sp_change_users_login (Jet). J'ai utilisé le script suivant que j'ai préparé tout le temps avant que je découvre sp_help_revlogin il y a de nombreuses années. Ça fonctionne encore:

DECLARE @user SYSNAME
DECLARE @SQL NVARCHAR(300)
DECLARE cur_Users CURSOR FOR
SELECT name
FROM sysusers
WHERE islogin = 1
AND isntname = 0
AND NAME NOT IN ('guest', 'dbo', 'sys', 'INFORMATION_SCHEMA')
ORDER BY name
OPEN cur_Users
FETCH NEXT
FROM cur_Users INTO @user
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @SQL = 'EXEC sp_change_users_login ' + '''' + 'UPDATE_ONE'
+ '''' + ', ' + '''' + @user + '''' + ', ' + '''' + @user + ''''
EXEC sp_executesql @SQL
FETCH NEXT
FROM cur_Users INTO @user
END
CLOSE cur_Users
DEALLOCATE cur_Users

Alice

Confirmation de:

Une des choses qui a changé avec 2000 par 2005 année est associée à de nouveaux 2005 Année par résolution du niveau de la base de données appelé CONNECT. DANS SQL Server 2000 Être un utilisateur dans la base de données signifiait également que vous avez accès à la base de données. Cependant B. SQL Server 2005 En soi, l'utilisateur de la base de données ne suffit pas pour fournir à l'utilisateur l'accès. Généralement, vous ne remarquez même pas, depuis la création d'un utilisateur dans SQL Server 2005 de l'autre côté DDL ou à travers l'interface graphique fournira automatiquement la permission de votre utilisateur CONNECT. Êtes-vous en quelque sorte perdu lors de la mise à jour?

Je peux recréer votre problème en créant un identifiant et en comparant la connexion avec une base de données, puis en vous tournant vers la base de données et effectuant REVOKE CONNECT TO Nom d'utilisateur. Quand j'essaie d'accéder à cette base de données via SSMS En tant que nom d'utilisateur, je reçois le même message d'erreur: la base de données n'est pas disponible.

Si vous êtes sûr que l'utilisateur n'a pas été orpheliné, je vous déplacerais soit dans la page Propriétés de la base de données. SSMS et assurez-vous que votre utilisateur de problème ait Grant Pour la permission CONNECT, Soit je suivrais la requête suivante:

Choisir pr.name, per. * FROM sys.database_principals AS pr JOIN sys.database_permissions AS per ON pr.principal_id = per.grantee_principal_id WHERE pr.name = "Ton nom d'utilisateur ici ' AND per.permission_name = 'CONNECT';

Si les lignes ne sont pas retournées, votre utilisateur doit ajouter à nouveau la permission. CONNECT, Pour accéder correctement à la base de données.

Alice

Confirmation de:

Était-ce une mise à jour ou avez-vous déconnecté et avez-vous encore connecté? Si vous déconnectez et déplacez la base de données sur un autre serveur, les utilisateurs apparaîtront dans la base de données, mais ils ne recevront pas nécessairement des pièges de sécurité. Vous devrez peut-être réinitialiser leurs autorisations sur le serveur ou supprimer l'utilisateur et le recréer.

Babette

Confirmation de:

Vous pouvez également utiliser la procédure stockée. sp_change_users_login, Pour réaffecter l'utilisateur de la base de données pour le nom de connexion correspondant sur un nouveau serveur. Il aide sans supprimer un utilisateur de base de données. Il enregistre également les droits des utilisateurs, qui est très pratique si vous définissez des autorisations détaillées pour les objets de la base de données. (Veuillez noter qu'il ne fonctionne pas avec les connexions avec authentification. Windows, Mais généralement, je n'ai aucun problème avec leur synchronisation.)

Pour répondre aux questions, connectez-vous ou registre