Comment configurer SQL Server 2012 pour qu'il puisse restaurer et voir les fichiers dans mon compte d'utilisateur?

10

J'ai une instance SQL Server 2012 exécutée en tant que service sur mon ordinateur et, selon la page de service, elle se connecte en tant que compte "NT Service \ MSSQLSERVER". Cependant, je ne vois pas ce nom de compte ailleurs, y compris dans la zone "Utilisateurs et groupes locaux" de l'écran de gestion de l'ordinateur, car, comme le dit un lien ci-dessous, ce n'est pas un compte d'utilisateur, c'est un nom de service, dans cette case qui Microsoft a si bien étiqueté "compte". À ce stade, je peux voir beaucoup de gens confus.

La tâche que j'essaie d'accomplir est de restaurer des fichiers à l'aide de la boîte de dialogue SSMS "Localiser le fichier de sauvegarde", qui utilise une boîte de dialogue complètement différente de toutes les boîtes de dialogue d'ouverture de fichiers Windows standard, probablement parce qu'elle effectue un travail "à distance" et fonctionne à partir de la contexte de sécurité du serveur SQL, une autre source riche de confusion pour l'utilisateur final, que j'espère que cette question pourrait aider à clarifier.

Jusqu'à présent, si je veux restaurer un fichier de sauvegarde .mdf / .bak que j'ai dans l'un de mes dossiers, je dois définir ce dossier pour qu'il soit lisible par tout le monde, sinon je ne peux pas y accéder avec SQL Server "Locate Backup Fenêtre "Fichier". Je trouve cette idée que vous utilisez une interface graphique parlant à un service qui a des comptes d'utilisateurs et des droits différents de vous, que personne chez Microsoft ne voulait même vous expliquer, très déroutant même quand j'ai des années d'expérience avec l'administration système de Windows .

J'espère avoir manqué quelques pages de documentation pour SQL Server qui vous diraient, après l'installation d'une nouvelle instance de serveur SQL, comment vous pourriez configurer la sécurité.

Des messages du forum comme celui-ci ont même des membres du personnel de Microsoft disant "c'est compliqué", et que cela "a encore changé" à Denali. Comment cela fonctionne-t-il maintenant dans SQL Server 2012 et comment puis-je ajouter l'autorisation de lire les fichiers appartenant aux utilisateurs à la sécurité du moteur de base de données SQL SID.

Warren P
la source
La raison pour laquelle SQL n'utilise pas la boîte de dialogue standard est que vous ne pouvez pas choisir un fichier à partir duquel SQL ne peut pas lire. En ce qui concerne la configuration de la sécurité, êtes-vous prêt à modifier le compte sous lequel SQL s'exécute ou voulez-vous le laisser tel qu'il est maintenant? Si le changement de compte de service est correct, cela est facile à prendre en charge. Nous utilisons des comptes nommés, donc je ne peux pas faire de test avec le compte générique MSSQLSERVER pour vous aider.
cfradenburg
Si tout le monde change ses serveurs SQL pour fonctionner avec un ID utilisateur normal lors du développement, cela pourrait être la "meilleure pratique". Je me demande simplement si c'est une bonne idée ou non. Si l'ajout manuel de "NT Service \ MSSQLSERVER" aux dossiers que je dois ajouter est l'idée standard, je suppose que ce serait la solution minimale la plus logique, non? Je souhaite que l'interface utilisateur SSMS du serveur SQL soit un peu plus facile à connecter à cet identifiant de compte "NT Server \ xxx" caché.
Warren P

Réponses:

5

Pour référence "Denali" est SQL Server 2012. En ce qui concerne la "confusion de l'utilisateur final", je ne suis pas du tout préoccupé par la confusion ou non d'un utilisateur final en ce qui concerne SSMS. Microsoft n'a pas développé cet outil pour l'utilisateur final normal, mais pour l'administrateur de base de données et / ou un utilisateur qui devait gérer une base de données. Il y aura donc une courbe d'apprentissage avec les outils fournis et leur fonctionnement. La boîte de dialogue de fichier a été ainsi dans SSMS depuis que SSMS est sorti avec SQL Server 2005. C'est pourquoi vous verrez généralement la plupart des instructions T-SQL pour sauvegarder, restaurer ou attacher une base de données qui l'utilise depuis lors. .

Pour configurer les autorisations du système de fichiers avec SQL Server, vous pouvez suivre les instructions de MSDN ici .

La façon dont les comptes de service sont gérés n'est pas venue avec ou à cause de SQL Server, elle était due à la modification au niveau du système d'exploitation. Windows Server 2008 R2 a mis un peu plus de couche de sécurité autour des comptes de service. L'avantage que vous avez est que le compte de service peut accéder plus facilement aux ressources d'un domaine même s'il est installé avec les paramètres par défaut. Ce lien fournit un aperçu assez détaillé de la façon dont les autorisations de compte de service sont gérées avec SQL Server 2012. Un extrait du lien est ci-dessous sur les comptes virtuels utilisés par défaut dans SQL Server 2012. Il existe également un lien fourni dans l'article qui va dans plus discussion sur le concept de compte de service avec Windows, ici. Il s'agit de Window Server 2008 R2, mais je pense que cela reste vrai sur Window Server 2012, et probablement Window Server 2012 R2.

Comptes virtuels

Les comptes virtuels dans Windows Server 2008 R2 et Windows 7 sont des comptes locaux gérés qui fournissent les fonctionnalités suivantes pour simplifier l'administration des services. Le compte virtuel est autogéré et le compte virtuel peut accéder au réseau dans un environnement de domaine. Si la valeur par défaut est utilisée pour les comptes de service lors de l'installation de SQL Server sur Windows Server 2008 R2 ou Windows 7, un compte virtuel utilisant le nom d'instance comme nom de service est utilisé, au format NT SERVICE \. Les services qui s'exécutent en tant que comptes virtuels accèdent aux ressources réseau en utilisant les informations d'identification du compte d'ordinateur au format \ $. Lorsque vous spécifiez un compte virtuel pour démarrer SQL Server, laissez le mot de passe vide. Si le compte virtuel ne parvient pas à enregistrer le nom principal du service (SPN), enregistrez le SPN manuellement. Pour plus d'informations sur l'enregistrement manuel d'un SPN, voir Enregistrer un nom de principal de service pour les connexions Kerberos. Remarque Remarque Les comptes virtuels ne peuvent pas être utilisés pour l'instance de cluster de basculement SQL Server, car le compte virtuel n'aurait pas le même SID sur chaque nœud du cluster.

Le tableau suivant répertorie des exemples de noms de comptes virtuels.

Instance par défaut du service du moteur de base de données: NT SERVICE \ MSSQLSERVER Instance nommée d'un service du moteur de base de données nommé PAYROLL: NT SERVICE \ MSSQL $ PAYROLL Service SQL Server Agent sur l'instance par défaut de SQL Server: NT SERVICE \ SQLSERVERAGENT Service SQL Server Agent sur un instance de SQL Server nommée PAYROLL: NT SERVICE \ SQLAGENT $ PAYROLL


la source
3
Par utilisateur final, je veux dire l'une des dizaines de catégories de personnes, certaines très professionnelles et techniquement compétentes dans diverses disciplines, mais qui ne sont PAS des DBA. Personnellement, je pense que même les administrateurs de bases de données trouveraient que l'interface utilisateur de cet outil pourrait être améliorée. Le marché robuste des outils tiers est un autre indicateur que SSMS, bien que gratuit, en vaut vraiment le prix.
Warren P
1
En 2017, cela ne s'est pas amélioré. Donc, la réponse courte est "ça ne s'améliorera jamais, apprenez comment cela fonctionne, même si l'interface utilisateur est mal conçue".
Warren P
2

Pour voir / accéder aux fichiers dans un autre dossier, accordez des NT SERVICE\MSSQLSERVERautorisations sur le dossier. Voir ma réponse publiée sur le fichier .bak non visible dans aucun répertoire de SSMS pour les captures d'écran et les étapes impliquées. (Légèrement différent de l'ajout d'autorisations utilisateur / groupe normales à un dossier.)

J'espère que ça t'as aidé!

AdamsTips
la source
1

En fait, si vous essayez de faire une restauration via SSMS et que vous êtes connecté via l'authentification Windows (!), Ce sera VOTRE compte Windows (et non "tout le monde non plus) qui aura besoin des autorisations pour cela - PAS le service SQL Server Compte. J'espère que cela éliminera la confusion. Le compte de service a d'autres besoins. Par exemple, si vous étiez connecté via un compte authentifié SQL - alors quelles autorisations le système d'exploitation devrait-il demander? - Ce sera le compte de service de SQL Server dans ce uniquement! Cela n'a pas changé depuis SQL Server 7.0 et probablement même pas avant :)

Andreas Wolter
la source
1
N'oubliez pas les informations d' identification .
Remus Rusanu
Je ne suis pas sûr qu'il efface la confusion ... Si vous êtes connecté via WA, votre compte SQL Server a besoin des autorisations pour restaurer (en ce qui concerne SQL Server), mais le compte de service SQL Server a besoin des autorisations de lecture sur le système de fichiers pour ouvrir le .bakfichier (qu'il n'aura généralement pas s'il se trouve dans votre répertoire utilisateur, sauf autorisation explicite).
Bruno