我是开发智能设备应用程序的新手,在尝试连接到远程SQL Server 2008 Express实例时遇到了一个奇怪的问题。
数据库可以访问,因为我可以通过Management studio从我的开发PC连接到它。
当我尝试从我的项目打开它的连接时,我收到一个本机错误。我认为它与我的连接字符串有某种关系。如您所见,我有一个名为SQLEXPRESS的SQL Server实例。
如果我从连接字符串中删除它并且只留下“server = 192.168.10.2,1433”,那么我得到一个正常的SQL异常而不是本机异常。但是,如果我使用正确的值(server=192.168.10.2,1433\\SQLEXPRESS)
,则会出现本机错误。
我包含了一个抛出上述异常的基本代码。
有问题的行是myConnection.Open();
using System.Data.SqlClient;
namespace SmartDeviceProject3
{
public partial class Form1 : Form
{
SqlConnection myConnection;
String constr = "server=192.168.10.2,1433\\SQLEXPRESS; Database=HKTLMSDB; User Id=user; Password=password; Connection Timeout=20";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
GetData();
}
private void GetData()
{
try
{
myConnection = new SqlConnection(constr);
myConnection.Open();
//some code here that queries data from the server and fills it into a datagrid
myConnection.Close();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
}
}
例外情况如下:
ExceptionCode:0xc0000005
异常地址:0x03fa25e4
阅读:0x00000000
错误模块:coredll.dll
偏移量:0x000585e4
在DbNetLib.ConnectionOpenW(IntPtr pConnectionObject,String networkname,Int32& errno)
非常感谢你的帮助!
答案 0 :(得分:1)
对不起,我发现了这个错误的原因。服务器实例应在连接字符串中用斜杠而不是反斜杠分隔。
正确的方法是:"server=202.31.95.86,1433/SQLEXPRESS;"
我在所有桌面应用程序中都使用反斜杠,但没有问题!紧凑的框架似乎更敏感。