以下是我的代码的简洁版本,因为它与数据库访问有关。
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
namespace DataAccess
{
public class DbConnection
{
public string connString = "Data Source=[Insert IP];Initial Catalog=MOSAIQ;Persist Security Info=True;User ID=[Insert User];Password=[Insert Password]";
public void CreateConnection()
{
using (SqlConnection conn = new SqlConnection(connString))
{
try
{
conn.Open();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}
出于安全原因,我已删除了IP和用户凭据。话虽这么说,我直接从成功连接到我的数据库的服务器资源管理器的属性复制了上面的连接字符串。
在单步执行此代码时,执行conn.Open()
时会捕获以下错误
很明显,在验证过程中存在问题。提供的凭据是用于SQL身份验证的凭据。
为什么我可以通过服务器资源管理器连接,但不直接通过我的代码连接? Visual Studio为我做了什么,我自己似乎无法做到?
端口是开放的,防火墙不是问题。我很难过,作为这个问题的新秀,我将不胜感激。
我尝试使用Visual Studio 2013年连接到SQL Server 2008 R2。
答案 0 :(得分:0)
作为测试尝试使用SqlConnectionStringBuilder
System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder();
builder["Data Source"] = "(local)";
builder["integrated Security"] = true;
//Or Supply User and Password
builder["Connect Timeout"] = 1000;
builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad";
Console.WriteLine(builder.ConnectionString);
如果您这样做并且仍然遇到错误,那么继续测试网络。
<add name="RM_V1.0CS1" connectionString="Data Source=SERVER;Initial Catalog=DB;User ID=sa;Password=Password" providerName="System.Data.SqlClient" />
编辑明确设置提供者:
答案 1 :(得分:0)
对于那些可能遇到类似问题的人。我通过工作将我的解决方案保存在网络驱动器上。因为我是从这个网络位置打开并运行我的解决方案的原因我还没有意识到它使用我的Windows凭据而不是我传递给SQL服务器的SQL凭据。将解决方案移动到本地工作站后,该方法按预期运行。任何关于更具体发生的事情的任何见解都会引起人们的兴趣。