我创建了一个Web服务,它将一些数据保存到db中。但我收到此错误:
无法打开登录请求的数据库“测试”。登录失败。用户'xyz \ ASPNET'登录失败。
我的连接字符串是
Data Source=.\SQLExpress;Initial Catalog=IFItest;Integrated Security=True
我创建了一个Web服务,它将一些数据保存到db中。但我收到此错误:
无法打开登录请求的数据库“测试”。登录失败。用户'xyz \ ASPNET'登录失败。
我的连接字符串是
Data Source=.\SQLExpress;Initial Catalog=IFItest;Integrated Security=True
Answers:
好吧,错误很明显,不是吗?您正在尝试使用用户“ xyz / ASPNET”连接到SQL Server-这是您的ASP.NET应用程序运行所使用的帐户。
不允许该帐户连接到SQL Server-要么在SQL Server上为该帐户创建登录名,要么在连接字符串中指定另一个有效的SQL Server帐户。
您能告诉我们您的连接字符串吗(通过更新原始问题)?
更新:好的,您正在使用集成的Windows身份验证->您需要在SQL Server上为“ xyz \ ASPNET”创建一个SQL Server登录名-或将连接字符串更改为以下形式:
connectionString="Server=.\SQLExpress;Database=IFItest;User ID=xyz;pwd=top$secret"
如果您的数据库中有一个用户“ xyz”,其密码为“ top $ secret”。
我会选择第二个选项:错误消息表示默认数据库不存在或其中没有权限,而不是未设置为登录名。
测试是否将其设置为登录名
SELECT SUSER_ID('xyz\ASPNET') -- (**not** SUSER_SID)
如果为NULL
CREATE LOGIN [xyz\ASPNET] FROM WINDOWS
如果不为NULL
USE test
GO
SELECT USER_ID('xyz\ASPNET')
如果为NULL
USE test
GO
CREATE USER [xyz\ASPNET] FROM LOGIN [xyz\ASPNET]
我遇到了这个问题,为我解决的问题是:
解决登录问题的最佳方法是在sqlServer中创建一个登录用户。以下是创建使用Windows身份验证(SQL Server Management Studio)的SQL Server登录名的步骤:
例如,如果用户名为xyz\ASPNET,则在“登录名”框中输入该名称。
另外,您还需要更改用户映射,以允许访问要访问的数据库。
该错误以类似于以下消息的形式呈现:
无法打开登录请求的数据库“数据库名称”。登录失败。用户XYZ登录失败。
解决方案包括以下步骤。您将不会丢失数据库中的任何数据,也不应删除数据库文件!
先决条件:您必须已安装SQL Server Management Studio(完整版或快速版)
解决方案的来源: https : //www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed
这对我有用。
阅读此博客。
我使用Windows身份验证连接到本地数据库.mdf文件,而我的本地服务器是sql server2014。我使用此连接字符串解决了问题:
string sqlString = " Data Source = (LocalDB)\\MSSQLLocalDB;" + "AttachDbFilename = F:\\.........\\myDatabase.mdf; Integrated Security = True; Connect Timeout = 30";
就我而言,这是一个不同的问题。数据库变成单用户模式,并且到数据库的第二个连接显示此异常。要解决此问题,请执行以下步骤。
exec sp_who2并找到与数据库“ my_db”的所有连接。通过执行KILL { session id }会话ID是sp_who2列出的SPID的操作来终止所有连接。USE MASTER;
EXEC sp_who2
USE MASTER;
ALTER DATABASE [my_db] SET MULTI_USER
GO
注意:如果使用Windows服务来托管Web服务。
您必须确保您的Web服务正在使用正确的登录帐户连接到SQL Server。
如果尚未在服务器中创建数据库,则将出现相同的登录错误。登录之前,请确保该数据库存在。
就我而言,asp.net应用程序通常可以毫无问题地连接到数据库。我在日志中注意到了这样的消息。我打开SQL Server日志,发现以下消息:
2016-10-28 10:27:10.86 Logon Login failed for user '****'. Reason: Failed to open the explicitly specified database '****'. [CLIENT: <local machine>]
2016-10-28 10:27:13.22 Server SQL Server is terminating because of a system shutdown. This is an informational message only. No user action is required.
因此,似乎服务器正在重新启动,并且SQL Server已比ASP.NET应用程序早一点关闭,并且数据库在服务器重新启动前几秒钟不可用。
就我而言,我在“系统”身份下运行Windows服务。错误是:
System.Data.SqlClient.SqlException (0x80131904):
Cannot open database "MyDbName" requested by the login. The login failed.
Login failed for user 'MYDOMAINNAME\HOSTNAME$'.
问题在于该错误非常容易引起误解。即使我在数据库中添加了“ MYDOMAINNAME \ HOSTNAME $”登录名,并授予该登录名sysadmin访问权限,并在目标数据库上添加了该登录名的用户,并使该用户成为dbowner,我仍然遇到相同的错误。显然,我需要对“ NT AUTHORITY \ SYSTEM”登录执行相同的操作。完成此操作后,我可以顺利登录。我不知道为什么错误消息会抱怨“ MYDOMAINNAME \ HOSTNAME $”。我删除了该登录名和相应的用户,一切仍然正常。