C#连接SQLServer数据库不同实例名的问题总结

C#连接SQLServer数据库方法非常简单:

private string connstr =@"Data Source=.\SQLEXPRESS;Initial Catalog=DbName;Integrated Security=True";
public SqlDataReader get_reader(string str)
{
    SqlDataReader dr = null;
    try
    {
        SqlConnection conn = new SqlConnection(connstr);
        conn.Open();
        SqlCommand cmd = new SqlCommand(str, conn);
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        return dr;
    }
    catch
    {
        return null;
    }
}

另外记得导入SqlClient包:

using System.Data.SqlClient;

一直这么使用很久都没遇到问题,可是今天在一台新安装的机器上程序运行就抛异常了:
未引用实例问题
怎么也登录不了,最后判断应该是连接不上数据库,再次检查连接数据库的字符串:

private string connstr =@"Data Source=.\SQLEXPRESS;Initial Catalog=DbName;Integrated Security=True";

这里有个问题:“Data Source=.\SQLEXPRESS”,也就是说数据库的实例名必须和我电脑是一样的,是默认的.\SQLEXPRESS:
数据库实例名称
但是如果安装SQLServer时候改为其他的实例名就不行了,比如是PCUSERNAME,那么就得改为Data Source=.\PCUSERNAME。
但是我们的程序总不能一个电脑一配置吧,有没有通用的设置呢?其实很简单的,只需改为“Data Source=.”就可以通用了,最终设置如下:

private string connstr =@"Data Source=.;Initial Catalog=DbName;Integrated Security=True";

这样数据库就能正常读取数据了,但是当使用xsd数据集的时候,读取数据库又报错了:
无法连接数据库错误
看来xsd数据集还是连接默认的.\SQLEXPRESS,在哪里修改呢?需要修改app.config文件:
配置文件
为了避免还有类似的地方,最好使用VS全局搜一下整个解决方案,看看还有没有.\SQLEXPRESS的地方。把搜到的地方都改为“Data Source=.”,这下程序终于使用正常了。
当然还可以用(local)或使用本机IP地址登录,首先使用SQL Server Management Studio连接到数据库,右击实例名选择“方面”:
设置数据库
在右侧的方面下拉框中选择“服务器配置”;将“RemoteAccessEnabled”属性改为“True”:
允许远程访问
设置好后再打开SQL Server配置管理器:
配置管理器
在SQL Server网络配置中右键“TCP/IP”,点击“属性”菜单,找到IP地址为192.168.x.xxx的地方,启用它,注意TCP端口是1433:
IP地址
然后启用“TCP/IP”:
启动TCP/IP
最后重新启动SQL Server(SQLEXPRESS)服务:
重启数据库代理服务
这样使用本机IP就可以连接数据库了:
使用IP连接数据库

猜你喜欢

转载自blog.csdn.net/xinxin_2011/article/details/86477087
今日推荐