无法通过Windows身份验证使用连接字符串连接到SQL Server

时间:2018-07-18 20:36:48

标签: c# sql-server

遵循此特定教程(Tutorial)后,我尝试使用Windows身份验证连接到我的单个SQL Server Express实例

这是连接字符串:

<connectionStrings>
    <add name="EmployeeContext" 
         connectionString="Server=.\SQLEXPRESSDAZ; database=Employee; Integrated Security = SSPI"
         providerName="System.Data.SqlClient"/>
</connectionStrings>

我去过SSMS,并确保我的用户映射设置为db_owner,并且Employee表是用户的默认表:domain\name

但是,在看到许多示例之后,我尝试了许多键/值对组合,但出现错误:

  

系统找不到指定的文件

     

SqlException(0x80131904):建立与SQL Server的连接时发生与网络相关或特定于实例的错误。

我什至尝试创建具有到Employee DB的用户映射的新用户,并将Integrated Security = SSPI更改为user idpassword,但仍然无法在本地连接到该实例。 / p>

这是SSMS的屏幕截图:

enter image description here

更新

我已将服务器属性更改为:Server=localhost\SQLEXPRESS并添加了:Initial Catalog=dbo,现在出现此错误:

Cannot open database "Employee" requested by the login. The login failed. Login failed for user 'xxxxx\DESKTOP-AIE9SAE$'.

就我的代码而言(可以在“教程”链接中看到),如果有帮助,似乎总是在引用此line 15

Employee employee = employeeContext.Employees.Single(emp => emp.EmployeeId == id);

更新2

SSMS安全性登录名和用户

Security Users

1 个答案:

答案 0 :(得分:0)

更新之后,您是否创建了映射到您的用户/角色的登录名?我总是倾向于忽略这一点。

  • 转到“安全性”>“登录名”>(右键单击)新登录名
  • 选择“ Windows身份验证”,然后在目录中找到您的用户名
  • 转到“用户映射”页面以将其与所需的用户/角色/数据库进行映射

https://docs.microsoft.com/en-us/sql/relational-databases/lesson-1-connecting-to-the-database-engine?view=sql-server-2017#create-a-windows-authentication-login

要创建此登录将引用的用户:

  • 转到“安全性”>“用户”>(右键单击)新用户
  • 选择“ Windows用户”,然后填写用户名,登录名(先前创建的)和默认架构
  • 转到角色页面,并确保用户使用正确的角色(db_owner?)

还可以尝试使用UDL file进行连接:只需创建一个空白文档并将扩展名重命名为.udl,然后执行它即可。这是诊断应用程序外部SQL连接的一种非常简单的方法。

编辑:T-SQL脚本,然后添加用户:

创建登录名:

CREATE LOGIN [domain\DarrylGriffith] FROM WINDOWS
GO

创建用户:

Use [Employee];
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'[darrylgriffith]')
BEGIN
    CREATE USER [darrylgriffith] FOR LOGIN [domain\DarrylGriffith] WITH DEFAULT_SCHEMA=[dbo]
    EXEC sp_addrolemember N'db_owner', N'[darrylgriffith]'
END;
GO

将结尾的角色更改为所需的用户最终角色。