读书人

在win server 2008 下 winForm 连接sq

发布时间: 2012-12-21 12:03:49 作者: rapoo

在win server 2008 上 winForm 连接sqlserver 2008
各位大侠,我在win server 2008上用winForm 连接sqlserver 2008,总是出现“provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接”错误,我用的连接字符串是“<add name="sqlconnection" connectionString="DataSource=localhost;Database=myDB;uid=uid;pwd=password;" providerName="System.Data.SqlClient" /> ”。
疑问有三: 一是连接字符串是否有问题?二是sqlserver 2008 应如何配置?三是win server 2008 要如何配置?请指教,谢谢!
[最优解释]
我用的vs2010,直接把debug复制到服务器上,字符串放在app.config中,winform和app.config 在一个目录里。是否和没有做安装程序有关?缺少一些运行文件?
[其他解释]
1、连接字符串到网上搜搜就好了。
2、你这个报错应该是没有开启named piped服务,然后还要开启sql Browser。
3、win server的话一般只要把防火墙陪一下就好了。

最重要是第二步,你先检查一下服务开启没有
[其他解释]
您好,服务已经开启,是否还需要重启win server

[其他解释]
不需要,;uid=uid;pwd=password你的账号就是uid?密码就是password?
[其他解释]
只是测试用的。还是不行。我用的是.net 4 服务器上也安装了,可有别的问题没有想到?
[其他解释]
发粪涂墙...这么有空啊.....
[其他解释]
是否与权限有关? sql server 新加的用户可需设置权限?应用程序的权限?
[其他解释]
找了个例子:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace BookHouseMag
{
public partial class Login : Form
{
public Login()
{
InitializeComponent();
}

int i= 2; //密码连续输入三次错误将关闭登录窗口,i用来记录登录次数

private void btnYes_Click(object sender, EventArgs e)
{
string userNo = txtNo.Text; //用户编号
string password = txtPwd.Text; //用户密码
string levels = cboLevel.Text;
if (userNo == ""
[其他解释]
password == "") //没有输入用户名或者密码给予提示
{
MessageBox.Show("请输入完整的用户名和密码", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);


}
else
{
string connString = @"Data Source=.\SQLEXPRESS;Initial Catalog=Book;Integrated Security=True";
SqlConnection connection = new SqlConnection(connString); //连接到引入的数据库

connection.Open(); // 打开数据库连接
string sql = String.Format("select count(*) from [User] where workerno='{0}'and password='{1}' and level= '{2}'", userNo, password, levels); //获取

用户名和密码匹配的行的数量的SQL语句
SqlCommand command = new SqlCommand(sql, connection); //创建 Command 对象
int num = (int)command.ExecuteScalar(); //执行查询语句,返回匹配的行数
if (num > 0) //如果有匹配的行,则表明用户名、密码和权限正确
{
MessageBox.Show("欢迎进入图书仓库管理系统!", "登录成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Hide(); //隐藏登录窗体
MainFrm mainForm = new MainFrm();// 创建主窗体对象
if (levels == "普通管理员") //如果是普通管理员登录,怎不能使用员工信息的功能
{
mainForm.levels1(); //调用主函数中自己定义的函数(不能使用员工信息的供能)
}
else //如果是特权管理员
{
mainForm.levels2(); //可以使用员工信息功能,调用自己定义的函数
}
mainForm.transmit(txtNo.Text); //将员工编号放进主窗体,transmit()是主窗体的函数


mainForm.ShowDialog(); // 显示窗体
this.Close(); // 显示窗体执行完毕后,登录窗体关闭
}
else //没有匹配的行,表明输入的用户名、密码或者输入的权限错误不正确
{
if (i == 0) //当i=0时,表明已经三次尝试登录
{
MessageBox.Show("已三次输入错误,登录界面关闭!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
this.Close(); //关闭登录窗体
}
else //输入错误,但是没有到三次
{
MessageBox.Show("您输入的用户名或密码错误或者选择了错误的登录权限,还有" + i + " 次机会!", "登录失败", MessageBoxButtons.OK,

MessageBoxIcon.Exclamation);
i = i - 1; //将i的值减1
}
}
connection.Close();// 关闭数据库连接
}

}


[其他解释]
引用:
是否与权限有关? sql server 新加的用户可需设置权限?应用程序的权限?
你最好先测试sa能不能访问。是不是本地测试?
[其他解释]
引用:
发粪涂墙...这么有空啊.....
最近只有晚上有时间了,年底了
[其他解释]
是在服务器上直接运行的winform
[其他解释]
没用sa ,用新建的用户可以直接进入sql server
[其他解释]
那基本上和server无关,你用账号:uid和密码:password来登录一下数据库,如果还报那个错,证明你连数据库都登录不了,更别说程序连了。如果SQLServer都登录不了,那开启tcp/ip,named piped、sql Browser。然后网络服务那里的TCP/IP也要启用


[其他解释]
晕,我要问你的都打完了,你看看你这些地方是不是都开启了:
1、
2、
3、
[其他解释]

引用:
我用的vs2010,直接把debug复制到服务器上,字符串放在app.config中,winform和app.config 在一个目录里。是否和没有做安装程序有关?缺少一些运行文件?
额~~~你最好打包成安装程序再放上去,虽然有可能是漏了文件,但是看报错的话还是SQLServer连不上的原因
[其他解释]
引用:
现在我的感觉也是sql server 没有问题,是winform 和app.config之间存在问题,可有解决办法?
这个....试试对你的程序先授予权限,看看是不是app权限太低
[其他解释]
现在我的感觉也是sql server 没有问题,是winform 和app.config之间存在问题,可有解决办法?

读书人网 >SQL Server

热点推荐