Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Accès refusé lors de l'insertion d'un fichier dans Sql Server 2012 FileTable à l'aide de File.CreateFile sur le site Web ASP.NET

Il s'agit d'un problème d'autorisations. Cependant, les autorisations ne sont pas accordées via NTFS mais via SQL Server.

L'identité du pool d'applications n'a aucune autorisation sur votre base de données par défaut, cela doit donc être modifié.

  1. Ajoutez une connexion à SQL Server pour l'identité du pool d'applications que vous utilisez pour votre site Web. Par exemple. "IIS APPPool\MonAppPool"

    USE [master]
    GO
    CREATE LOGIN [IIS APPPOOL\myapppoolname] FROM WINDOWS WITH DEFAULT_DATABASE=[MyDatabase]
    GO
    
  2. Ajoutez un utilisateur à votre base de données que cette connexion utilisera

    USE [MyDatabase]
    CREATE USER [MyUserName] FOR LOGIN [IIS APPPool\myapppoolname]
    
  3. Accordez à l'utilisateur les autorisations pertinentes sur votre base de données

    use [MyDatabase]
    GRANT INSERT TO [MyUserName]
    GRANT SELECT TO [MyUserName]
    GRANT UPDATE TO [MyUserName]
    

Je ne sais pas s'il s'agit de l'ensemble complet d'autorisations requises, mais j'ai trouvé que c'était suffisant pour que je puisse enregistrer un nouveau fichier.