Eri*_*ine 5 sql-server ssms entity-framework t-sql sql-server-express
我有一个 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
在有效选项卡中拥有权限。
请停止使用该user instance=true
设置。不仅不推荐使用此功能,而且这里实际发生的情况是 Management Studio 正在启动与您的应用程序正在使用的用户实例不同的 SQL Server 用户实例,因此您看不到相同的内容也就不足为奇了在这两种情况下。
(通常,这种情况的症状是有人从他们的应用程序运行更新,然后检查 Management Studio 中的表,认为存在错误但没有意识到更新影响了数据库的不同副本。)
在正在运行的 SQL Server 实例上创建数据库(或将其附加到那里)。然后以相同的方式User Instance
从 SSMS 和您的应用程序连接到该服务器,无需设置。这里有更多信息。不要在应用程序每次启动时都创建数据库——这听起来非常错误。
归档时间: |
|
查看次数: |
2836 次 |
最近记录: |