应用程序的 SQL 登录失败,但 SSMS 的 SQL 登录正常

应用程序的 SQL 登录失败,但 SSMS 的 SQL 登录正常

我用 C# (4.5) 编写了一个简单的测试应用程序,它只用于连接数据库并显示一条消息。(基本上只是为了测试部署和数据库连接。)在我的本地工作站上,一切正常。我安装了 SQL Express 2012,以当前用户身份连接(集成安全性),没有问题。

但是,当部署到 Windows Server 2008 时,应用程序无法连接到数据库。它不断收到登录失败错误。

在服务器上,我按照相同的方式安装 SQL Express 2012。运行控制台应用程序时,我以管理员身份登录。我甚至尝试打开混合模式身份验证、创建用户并以该用户身份连接。我可以在 SQL Management Studio 中连接,但应用程序总是出现登录失败错误。

Windows Server 2008 中是否存在一些隐藏的安全设置,我需要修改这些设置才能允许 .NET 应用程序连接到 SQL 服务器?什么原因导致了我可以通过 SSMS 登录数据库,但不能通过应用程序登录数据库?

错误:

System.Data.SqlClient.SqlException (0x80131904): 无法打开登录请求的数据库“TestDatabase”。登录失败。用户“sa”登录失败。

当然,这是我尝试连接时出现的错误版本,作为sa最后的测试努力。同样的错误发生在TestUser(我为此创建的 SQL 用户)以及PERSONALSERVER\Administrator(运行应用程序的当前登录用户)身上。

我尝试过的连接字符串是:

  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;Integrated Security=True
  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;User Id=TestUser;Password=testpassword

答案1

在配置管理器中,确保 TCP/IP 和命名管道已启用。

在控制面板中,尝试使用 SQL Server 驱动程序(在管理工具下)->数据源创建 SQL 连接,因为这只会测试具有很少变量的本地连接(例如,您的代码(我确信它写得很完美:)))

另外,您是否有 2 个地方引用了您的连接字符串(我已经这样做了);它被保存在我的 app.config 文件中,并作为我的代码中的字符串(甚至是资源字符串)。

通过 IP 地址而不是计算机名称进行连接(这意味着也更新您的连接字符串 - 有关如何操作的详细信息位于本文底部)。

最后,将连接字符串更新为

数据源=.\sqlexpress2012;初始目录=TestDatabase;集成安全性=SSPI;用户 ID=myDomain\myUsername;密码=myPassword;

或者尝试一下:

服务器=.\sqlexpress2012;数据库=TestDatabase;Trusted_Connection=True;

我将假设用户对相关数据库拥有有效的权限。:)

确保 SQL 端口(通常为 1433 和 1434)处于打开状态。

使用用户名/密码登录 SSMS,以确保他们确实拥有权限。

www.ConnectionStrings.com- 连接字符串的绝佳资源!:)

相关内容