所以我正在尝试制作一个简单的C#控制台应用程序,只需查询数据库 - 仅此而已。
但是,我一直收到这个错误:
未处理的类型异常 'System.Data.SqlClient.SqlException' 发生在System.Data.dll
中其他信息:A 与网络相关或特定于实例的 建立一个错误时发生错误 连接到SQL Server。服务器 没找到或无法访问。 验证实例名称是否为 正确和SQL Server是 配置为允许远程 连接。 (提供者:命名管道 提供者,错误:40 - 无法打开 连接到SQL Server)
现在,我已经尝试了一切!我已经编辑了所有设置(添加了防火墙例外,启用了TCP / IP,几乎可以通过谷歌搜索找到任何解决方案,我做了)。当我尝试使用SQL Management Studio使用我的连接字符串中的相同凭据建立连接时,一切都完美无缺。由于某种原因BUt,Visual Studio无效。
这是我的连接字符串:
<add name="Invoicing"
connectionString="Data Source=server;Initial Catalog=Invoicing;Persist Security Info=True;ID=id;Password=pw"
providerName="System.Data.SqlClient" />
这是app:
class Program
{
public static void Main(string[] args) {
Invoicing db = new Invoicing("Invoicing");
var q = from sin Invoice
where s.Date == 201007
select s;
foreach(var sin q)
Console.WriteLine("{0}, {1}", s.CreateDate,
s.EndDate);
}
}
这是我的堆栈跟踪:
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user)
at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe()
at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode()
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.GetQueryText(Expression query)
at System.Data.Linq.DataQuery`1.ToString()
如果重要的话,我使用SqlMetal创建了DataContext。
此外,我正在使用.Net 2008和SQL 2008。
有没有人对如何做有任何想法?
答案 0 :(得分:4)
如果以下工作可能值得测试:
SqlConnection con = new SqlConnection("Data Source=server;Initial Catalog=Invoicing;Persist Security Info=True;ID=id;Password=pw");
对我而言,您的连接字符串可能不正确 - 没有提供用户。 我使用以下连接字符串: “数据源= ServerNameHere;初始目录= DBNameHere;用户ID = XXXX;密码= XXXX”
答案 1 :(得分:4)
你说你启用了TCP / IP,但是你禁用了命名管道吗?我之前遇到过这种情况,使用Sql Server配置管理器禁用命名管道为我解决了这个问题。
您也可以在连接字符串中specify the protocol,因此您可能还想尝试一下。
答案 2 :(得分:2)
我不认为“身份证”是对的。我知道连接字符串中有很多这些东西的别名,但我总是使用“用户ID”
看看here