【问题标题】:Cannot find SQL Server : SqlConnection problem找不到 SQL Server:SqlConnection 问题
【发布时间】:2020-10-18 17:22:02
【问题描述】:

这是我第一次,我在互联网上检查了它,我遵循了每一步,但我在SqlConnection 遇到了一个问题,我认为它说它找不到 SQL Server 并且不知道为什么。

我正在尝试制作一个简单的员工数据(带有照片和日期),我想将其保存到 SQL Server。起初,我创建了一个新的 SQL Server,并将(localdb)\MSSQLocalDB 作为服务器名称,EmployeeDatabase" 作为新的数据库名称。

我在数据库的属性中得到了连接字符串,这就是我得到的

"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=USER_TABLE;Integrated Security=True;Pooling=False"

使用此连接字符串时出现此错误:

System.Data.SqlClient.SqlException: '建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)'

代码:

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

namespace EmployeeDataSystem
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void Insert_button_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=USER_TABLE;Integrated Security=True;Pooling=False");
            con.Open();

            SqlCommand cmd = new SqlCommand("INSERT INTO Personnel(Id,EmployeeName,EmployeeBirthdate,EmployeeSalary,EmployeeAddress,EmployeeMobile,EmployeeHiredate,EmployeePhoto) VALUES (@Id,@EmployeeName,@EmployeeBirthdate,@EmployeeSalary,@EmployeeAddress,@EmployeeMobile,@EmployeeHiredate,@EmployeePhoto)", con);
            cmd.Parameters.AddWithValue("@Id", int.Parse(Id_number.Text));
            cmd.Parameters.AddWithValue("@EmployeeName", int.Parse(Employee_name.Text));
            cmd.Parameters.AddWithValue("@EmployeeBirthdate", dateTimePicker1.Value);
            cmd.Parameters.AddWithValue("@EmployeeSalary", int.Parse(Salary_textbox.Text));
            cmd.Parameters.AddWithValue("@EmployeeAddress", int.Parse(Address_textbox.Text));
            cmd.Parameters.AddWithValue("@EmployeeMobile", int.Parse(Mobile_textbox.Text));
            cmd.Parameters.AddWithValue("@EmployeeHiredate", dateTimePicker2.Value);
            cmd.Parameters.AddWithValue("@EmployeePhoto", pictureBox1.Image);
            cmd.ExecuteNonQuery();
            con.Close();

            Id_number.Text = "";
            Employee_name.Text = "";
            //dateTimePicker1.Value = "";
            Salary_textbox.Text = "";
            Address_textbox.Text = "";
            Mobile_textbox.Text = "";
            //dateTimePicker2.Value = "";
            //pictureBox1.Image = "";

            MessageBox.Show("Successfullly Inserted!");
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            OpenFileDialog open = new OpenFileDialog();
            PictureBox p = sender as PictureBox;

            if(p != null)
            {
                open.Filter = "(*.jpg;*.jpeg;*.bmp;)|*.jpg; *.jpeg; *.bmp;";

                if(open.ShowDialog() == DialogResult.OK)
                {
                    p.Image = Image.FromFile(open.FileName);
                }
            }
        }
    }
}

【问题讨论】:

  • 您的照片难以阅读。请将期望消息以文本形式发布。
  • 在此感谢您:System.Data.SqlClient.SqlException: '建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)'
  • 您应该edit您的问题并将此信息直接放在问题中(而不是照片)。
  • 先检查MSSQL服务器实例是否正确,再检查MSSQL设置是否允许远程连接
  • 谢谢我已经检查过了,已经允许远程连接

标签: c# sql-server sqlconnection


【解决方案1】:

初始目录=EmployeeDatabase

如果您不确定您的实例名称(数据源),请执行以下操作:

  1. 打开命令提示符窗口
  2. services.msc
  3. 找到以 SQL 开头的条目。 每个实例都有一个名为 SQL Server (instancename) 的条目。实例名称显示在括号内。

【讨论】:

  • 并检查 Sql Server 服务是否正在运行。
  • 它正在运行但只有SQL Server VVS Writer
【解决方案2】:

如果使用默认的instanst sql server,则使用点(。)作为数据源,否则使用instansname,您可以通过sql server中的服务器名称找到

SqlConnection con = new SqlConnection("Data Source=your instance name;Initial Catalog=databasename;User Id=your user;Password=your password;Integrated Security=True;Pooling=False");

找到您的实例名称 并选择远程到 sql server 的登录名 并单击您的用户并设置用户

【讨论】:

  • 我已经试过了,但没有用。我现在正在下载SQL Server Management Studio,有必要吗?
  • 您的默认实例名称是什么?你是在 sql server 中添加登录吗?你是 sql server mixed mod enable 吗?
  • 我认为是 /MSSQLLocalDB ,是的 sql server mixed mod enable
  • 我更新了我的答案,如果你有问题请回答我
  • 如果您从 sql server 引擎名称上传照片时遇到问题
【解决方案3】:

在你的图片中,连接字符串是

 "Data Source=.;Initial Catalog=USER_TABLE;Integrated Security=True;Pooling=False"

改成

"Data Source=.\MSSQLLocalDB;Initial Catalog=USER_TABLE;Integrated Security=True;Pooling=False"

【讨论】:

  • MSSQLLocalDB 之前的反斜杠带有红色下划线/错误,显示“无法识别的转义序列” 严重性代码 描述 项目文件行抑制状态错误 CS1009 无法识别转义序列 EmployeeDataSystem C:\Users\siych\OneDrive\Desktop\Employee数据系统\EmployeeDataSystem\EmployeeDataSystem\Form1.cs 62 活动
  • 使用 \\ 而不是 \ 并再次尝试机会
  • instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)'
  • 你能从你连接的SQL服务器上拍照吗
  • 您好,我已经收到了,谢谢您的帮助!!这里:SqlConnection con = new SqlConnection("Data Source =(localdb)\\MSSQLLocalDB; Initial Catalog = USER_TABLE; Integrated Security = True; Pooling = False");
【解决方案4】:

尝试使用 . (点)作为实例名称

【讨论】:

    【解决方案5】:

    此错误消息的原因有很多,如下所示

    杀毒软件, 防火墙 SQL Server 网络配置 请检查连接字符串“Data Source=x.x.x.x,1433”中是否有端口 SQL Server Express 默认为 SQLEXPRESS 实例名称 尝试使用 .或

    所以尝试使用 .\SQLEXPRESS 或(本地)\SQLEXPRESS 作为您的服务器+实例名称。

    如果这不起作用:您在 Management Studio 中使用什么服务器名称连接到您的 SQL Server 实例?使用那个名字!

    【讨论】:

    • 您好,谢谢您,我应该下载 Management Studio 吗?因为我觉得我还没有
    • 您的默认实例名称是什么?你在sql server中添加登录吗?你安装混合模式sql server?
    • 我认为是 /MSSQLLocalDB ,是的,在 sql server 中登录也是 sql server mixed mod enable
    • heidisql.com尝试下载安装并登录
    猜你喜欢
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多