为什么我无法通过C#应用程序连接远程SQL服务器?

3

我是C#的新手,正在使用Windows表单。

我有两台电脑通过以太网交叉线缆连接在一起(没有使用域),它们之间可以成功通信。PC1安装了Windows 7并托管SQL服务器(192.168.10.1),PC2上运行C#应用程序,该应用程序连接到SQL服务器,C#应用程序如下:

namespace Remote_DB_Connection
{
    public partial class Form1 : Form
    {
        SqlConnection MyConnection = new SqlConnection(@"Data Source=192.168.10.1\COFFEESHOP-PC,1433;Initial Catalog=mydb1;Trusted_Connection=True");

        SqlCommand MyCommand = new SqlCommand();
        DataTable DataTable = new DataTable();
        SqlDataAdapter Sql_Data_Adapter = new SqlDataAdapter();

        public Form1()
        {
            InitializeComponent();

            MyConnection.Open();
            MyCommand.CommandText = "SELECT * FROM Table1";
            MyCommand.Connection = MyConnection;
            Sql_Data_Adapter.SelectCommand = MyCommand;
            Sql_Data_Adapter.Fill(DataTable);

            button1.Text = Convert.ToString(DataTable.Rows[0]["Type"]);
            button2.Text = Convert.ToString(DataTable.Rows[1]["Type"]);
            button3.Text = Convert.ToString(DataTable.Rows[2]["Type"]);

            MyCommand.Parameters.Clear();
            Sql_Data_Adapter.Dispose();

            MyConnection.Close();
        }
    }
}

现在,当我运行应用程序时,它会抛出以下错误:"登录来自不受信任的域,无法与Windows身份验证一起使用"。在SQL Server中,我使用Windows身份验证登录。
我看了这里和这里,他们说我应该在SQL Server中创建用户名和密码才能远程连接到SQL Server。我的问题是:我真的必须在SQL Server中创建用户名和密码来解决此错误并连接到SQL吗?我的意思是是否有其他方法来解决这个问题?
请帮帮我,谢谢。

1
没有用户名/密码或域,SQL Server 怎么知道你是谁? - qxg
@qxg,那我是否需要在 SQL Server 上将登录方式从 Windows 身份验证更改为 SQL Server 身份验证,并创建用户名和密码? - Kate
1
我没有工作组机器来测试。尝试在两台机器上创建相同的用户/密码。无论如何,没有域的情况下SQL登录更容易。 - qxg
你看过基于证书的身份验证吗? - Joe C
1个回答

3

我的问题是:我是否真的需要在SQL Server中创建用户名和密码来解决这个错误并连接到SQL?

是的,因为您的机器不属于Windows域,因此它们之间不可能进行Windows可信身份验证(Trusted_Connection=True)。如果这些机器不属于Windows域,SQL Server无法知道客户端是谁,除非在连接字符串中提供用户名和密码。


好的,谢谢。我需要将登录方式从Windows身份验证更改为SQL Server身份验证吗?而且在"Trusted_Connection=True"之外,我应该使用什么?谢谢。 - Kate
1
是的,您应该切换到SQL服务器身份验证,而不是使用Trusted_Connection=True,而是使用Trusted_Connection=False;username=some_user;password=some_secret。当然,您需要在SQL服务器上创建相应的“登录”,并将其与所需数据库的适当权限关联起来。对于基于SQL的管理和维护问题,建议您在http://serverfault.com上提问,因为SO是更面向编程的网站。 - Darin Dimitrov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接