我知道这个问题之前已经被问过,但是没有一个解决方案似乎有所帮助。我正在将数据库从托管SQL Server 2008 Express的一台计算机迁移到另一台计算机。基本上完全相同的配置。我将我的数据库从旧服务器备份到新服务器。当我尝试运行我的应用程序时,我被告知“用户'sqluser'登录失败了。”我已经比较了旧服务器和新服务器的设置,就我所知,它们完全相同。如果有帮助,这是我的连接字符串:
<add name="RetailCrimeConnectionString" connectionString="Data Source=NewServer\SQLEXPRESS;Initial Catalog=RetailCrime;Persist Security Info=True;User ID=sqluser;Password=AwesomePassword"
providerName="System.Data.SqlClient" />
如果我将连接字符串切换回OldServer,我的应用程序再次开心。
用户sqluser是RetailCrime上的datareader和datawriter - 就像他在OldServer上一样。应用程序显然正在连接,因为如果我将数据源更改为故意不正确的错误,则错误会更改为连接错误。我已经完成了SQL实例设置,并且认为启用了所有需要启用的功能。我甚至添加了防火墙例外(我不需要对OldServer采取的步骤)。我重新创建了数据库,并在NewServer上创建了一个测试结果,结果相同。
我可能错过了谷歌搜索结果的正常票价以外的任何内容吗?如果您还需要其他任何信息,请与我们联系。我不确定要包括哪些其他细节。
谢谢!
答案 0 :(得分:2)
我明白了。事实证明,我将服务器设置为仅在我设置时接受Windows身份验证而不是SQL Server帐户。一旦我在SMSS中设置了它,Web应用程序就开始接受SQL登录而没有任何问题。当我意识到我可以通过冒充Windows帐户进行连接时,我发现了这个想法。谢谢你的想法!圣诞快乐!
答案 1 :(得分:1)
您是否为sqluser创建了 SQL登录并将其映射到数据库用户?
您只在提问中提及数据库用户。
答案 2 :(得分:0)
尝试删除“NewServer”,然后添加“。”代替。如果它不在同一台机器上,请将NewServer的IP地址替换为“。”,如“Data Source = 10.10.46.15 \ SQLExpress”。如下所示:
<add name="RetailCrimeConnectionString"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=RetailCrime;Persist Security Info=True;
User ID=sqluser;Password=AwesomePassword" providerName="System.Data.SqlClient" />
您还需要确保已启用TCP / IP通信。这是针对2012年但步骤应该类似,请参阅步骤:
<强>更新强>
最后要尝试的事情,可能是:
转到开始&gt; Microsoft SQL Sever 2012文件夹&gt;配置工具&gt;打开SQL Server配置管理器
确保SQL Server服务列表中的所有内容都未停止。并确保启动模式设置为自动,而不是手动。