我有一个 ASP.NET MVC Web 应用程序部署到 Windows Server 2012 机器上的 IIS。当应用程序第一次启动时,它会在必要时通过实体框架创建它需要的数据库和表。这一切正常,现在我想通过 SQL Server Management Studio 对数据库进行一些管理。但是,当我打开该工具时,我只能看到系统数据库。如果我从连接字符串中删除“User Instance=true”并让应用程序再次创建数据库,我就可以看到数据库。
当User Instance=true 在连接字符串中时,为什么我无法查看Web 应用程序创建的数据库? 如果我使用具有所有角色的帐户通过 Management Studio 查看服务器实例,我希望它能够查看任何和所有数据库。
一些可能有帮助的细节:
该应用程序在 Web.config 中使用以下连接字符串:
<add name="DefaultConnection" connectionString="Data Source=.\SqlExpress;
Initial Catalog=Foo.Dashboard; Integrated Security=SSPI;User Instance=true"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
在IIS中,应用程序池设置为与身份运行LocalService
和Load User Profile
设置True
。在 SQL Server Express 上,我们为该Local Service
帐户添加了一个登录名并为其分配了dbcreator
角色。当应用程序启动时,它就能够创建数据库和表,一切似乎都在运行。
然后我使用远程桌面连接到服务器并打开 SQL Server Management Studio。要连接到数据库,我输入.\SQLEXPRESS
服务器名称并使用Windows Authentication
. 然后我连接并且只看到系统数据库。我已将所有可能的数据库角色添加到我的登录名中,并且我看到我VIEW ANY DATABASE
在有效选项卡中拥有权限。