Sql &引用;无法打开数据库-登录失败。在ManagementStudio中工作,而不是在代码中工作

Sql &引用;无法打开数据库-登录失败。在ManagementStudio中工作,而不是在代码中工作,sql,sql-server,sql-server-2008,umbraco,ssms,Sql,Sql Server,Sql Server 2008,Umbraco,Ssms,哦,是的,著名的错误是: 无法打开登录请求的数据库“MYDBNAME”。登录失败。用户“USERNAME”登录失败 让我解释一下我的情况: 我有一个数据库服务器,它有一个SA帐户和我的用户帐户。用户具有到我的数据库(dbowner)的正确映射 我可以使用SQL Management Studio 2008 R2在SQL server本身(使用本地主机)和前端服务器上与此用户一起打开数据库 然而,当我运行我的应用程序时,我得到了登录失败的错误 奇怪的是,我在前端服务器上有一个测试应用程序和一个生产

哦,是的,著名的错误是:

无法打开登录请求的数据库“MYDBNAME”。登录失败。用户“USERNAME”登录失败

让我解释一下我的情况:

我有一个数据库服务器,它有一个SA帐户和我的用户帐户。用户具有到我的数据库(dbowner)的正确映射

我可以使用SQL Management Studio 2008 R2在SQL server本身(使用本地主机)和前端服务器上与此用户一起打开数据库

然而,当我运行我的应用程序时,我得到了登录失败的错误

奇怪的是,我在前端服务器上有一个测试应用程序和一个生产应用程序。测试应用程序在同一数据库服务器上有测试数据库,这里没有登录问题。两者之间唯一的区别是前缀不同于“TEST”和“PROD”。测试应用程序可以正常工作,但产品无法正常工作。用户映射和它似乎应该在这两个方面都起作用

有什么想法吗

编辑:

我们的连接字符串:

<add key="umbracoDbDSN" value="Server=Websqlsrv01;Database=PROD_Databasename;User ID=umbraco_user;Password=password;Trusted_Connection=False" />

Sql server具有登录/用户二分法

它们是两个不同的实体:

您的sql登录可能与数据库PROD\u Databasename的用户没有关联,而仅与TEST\u Databasename的用户关联

另一个原因可能是用户默认数据库或最终不同的数据库模式

只要为PROD_Databasename创建一个新用户并在connectionstring中使用它,您就可以轻松地检查其中一个问题

另一种方法是执行

exec sp_helpuser
在两个数据库(PROD和TEST)中,查看是否列出用户名“umbraco_user”

无论如何,对两个不同的用户使用相同的登录不是一个好的做法:


右键单击应用程序并以管理员身份运行。这应该管用

如果设置的不是默认实例,有时需要在连接字符串中使用
servername\instancename
。使用链接查找实例名称。试试看

您能告诉我们您在代码中使用的连接字符串吗?当然可以。刚刚添加了connectionstring:-)如果删除“TrustedConnection=False”并只保留其他4个属性,会发生什么情况?完全没有-不幸的是,错误相同。比较两个环境之间的ff:选择*from sys.database\u permissions,其中被授权人\u principal\u id=user\u id('umbraco\u user')默认数据库为master。我尝试了几个不同的数据库-没有帮助:-(@Mcoroklo我在我的答案中添加了一些测试。试着去做。结果它是某种缓存,当我今天早上尝试时它突然起作用。我不明白,因为我确定我的缓存被清除了…无论如何,你的赌注肯定是大多数情况下的最佳猜测。因此我选择你的答案为“答案”。