如何使数据库转到 SQL Server 而不是 localDB?

Posted

技术标签:

【中文标题】如何使数据库转到 SQL Server 而不是 localDB?【英文标题】:How to make database go to SQL Server instead of localDB? 【发布时间】:2017-03-29 00:53:49 【问题描述】:

我能够在 Windows 身份验证和 SQL Server 身份验证下登录 SSMS。但我在 SQL Server Management Studio 的任何地方都没有看到数据库。在 Visual Studio 中,即使我已更改连接字符串以在我的 SSMS 中创建数据库,它也会转到 localDb。

<!--<add name="BookServiceContext" connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=BookServiceContext-20170328200803; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|BookServiceContext-20170328200803.mdf"
      providerName="System.Data.SqlClient" />-->
    <add name="BookServiceContext" connectionString="Data Source=AA5570LT;Initial Catalog=BookServiceContext;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

有时,我可以在 VS 服务器资源管理器的数据连接下看到名称 BookServiceContext,但是当我单击连接时,我会收到此错误消息

无法打开登录请求的数据库“BookServiceContext”。登录失败。 用户“MLS\AAnwar”登录失败。

我该怎么做才能让它在我的 SSMS 中正确连接?

【问题讨论】:

用户 MLS\AAnwar 可能没有所需的权限,因为 Integrated Security=SSPI 已被使用,表明 Windows 身份验证模式已启用。在 SQL Server 中检查您的 Windows 帐户登录权限,或使用在连接字符串中提供 User IDPassword 参数的混合模式身份验证。 我该怎么做?我在 VS 中的同一解决方案中的另一个项目使用相同的连接字符串可以正常工作。我不知道为什么这不起作用? 【参考方案1】:

VS Sql Server 对象资源管理器和服务器资源管理器只是提供了一种访问数据库的便捷方式 它提供与 SSMS 类似的功能 - 因为您可以登录 SSMS,为什么不在那里进行管理。

但是如果你真的想通过VS来管理数据库, 那么 Sql Server 对象资源管理器和服务器资源管理器都提供了一种添加方式(工具栏有添加图标)任何数据库连接,所以你可以在那里做。

关于两个视图的更多信息

你在 SQL Server 对象资源管理器中看到 localdb 的原因是因为当你安装 VS 时,安装了一个 localdb,因此它会默认显示 如上所述,如果你想连接到其他的sql server,你可以随时通过工具栏添加新的sql server

服务器资源管理器将读取您的 web.config 以提供访问数据库的简便方法 - 根据您的错误信息,当前的 windows 用户似乎无权访问 db - 这可能有很多原因,似乎您有混合登录,为什么不只使用 sql server 帐户? 只需将您的连接字符串更改为:

<add name="BookServiceContext" connectionString="Data Source=AA5570LT;Initial Catalog=BookServiceContext;user id=sqlUserId;password=sqlUserPassword" providerName="System.Data.SqlClient" />

您也可以通过工具栏手动添加数据库连接

【讨论】:

sqlUserId 是我的 SQL Server 身份验证登录名吗?我试过了,但我得到了同样的错误。我删除了(localdb)MSSQLLocalDB 下的数据库,并在控制台中执行了update-database,然后数据库再次显示在 localDb 下而不是我的 AA5570LT 服务器下。【参考方案2】:

在过去 2 天我一直在努力解决这个问题后,终于让它工作了。我所要做的就是在解决方案资源管理器中将项目设置为“启动项目”,它解决了这个问题。该数据库是在包含所有数据的正确服务器中创建的。

【讨论】:

以上是关于如何使数据库转到 SQL Server 而不是 localDB?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 数据库中将 Azure 存储用于 elmah 日志而不是 elmah 日志

如何将 Openoffice calc excel 连接到 sql server 而不是 asp.net 中的 oledb excel 连接

如何获得价值比多列值,而不是使用从SQL Server复合键字段

如何在 SQL Server 中使用 XML 节点传递 NULL 而不是字符串格式的“NULL”值

SQL Server用户权限问题

SQL Server - 连接表,使多行变成一行