开发者社区 问答 正文

从不同的网络访问MS SQL Server

我在用C#编程。我想从计算机A访问计算机B以插入或读取一些数据。

计算机A运行C#(WPF)程序,计算机B已安装SQL Server。

计算机A的IP地址为192.168.X.10,计算机B的IP地址为192.168.Y.10。如何从A访问计算机B上的SQL Server?

端口转发是解决方案吗?任何基于C#代码的解决方案(而不是路由器或计算机配置)都将是首选。

我注意到,可能是来自不同网络的另一台计算机想要访问SQL Server。

展开
收起
心有灵_夕 2019-12-22 14:16:05 614 分享 版权
阿里云 AI 助理回答

要从C#程序访问另一台计算机上的SQL Server,您不需要进行端口转发,但确保两台计算机之间的网络连接是畅通的,并且SQL Server配置允许远程连接。以下是在C#中使用ADO.NET连接到远程SQL Server的基本步骤:

  1. 确保SQL Server配置正确

    • 在计算机B上,打开SQL Server Configuration Manager,确保TCP/IP协议已启用。
    • 在SQL Server Management Studio (SSMS) 中,检查服务器的“安全性”设置,确保“SQL Server和Windows身份验证模式”被选中。
    • 同样在SSMS中,检查“外围应用配置器”,确认远程连接被允许。
    • 确认防火墙设置允许SQL Server的默认端口1433(或其他自定义端口)的入站连接。
  2. 编写C#代码连接SQL Server: 使用ADO.NET中的SqlConnection类来建立与SQL Server的连接。下面是一个简单的示例代码,展示如何连接并执行一个查询:

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=192.168.Y.10,1433;Database=YourDatabaseName;User ID=YourUsername;Password=YourPassword;";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("Connected to SQL Server successfully!");

                // 示例查询
                string sqlQuery = "SELECT * FROM YourTableName";
                SqlCommand command = new SqlCommand(sqlQuery, connection);
                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Console.WriteLine(reader[0]); // 假设第一列有数据
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

请将YourDatabaseNameYourUsernameYourPassword以及YourTableName替换为实际的数据库名、用户名、密码和表名。

  1. 注意点
    • 如果SQL Server运行在非默认端口,连接字符串中的服务器部分应包括端口号,如Server=192.168.Y.10,1433;
    • 确保用于连接的用户具有足够的权限访问指定的数据库和表。
    • 考虑安全实践,避免硬编码敏感信息(如密码),可以考虑使用加密或环境变量等方式存储这些信息。

通过以上步骤,您的C#应用程序应该能够跨网络访问位于计算机B上的SQL Server了。如果遇到连接问题,检查网络配置、防火墙规则以及SQL Server的日志文件以获取更多错误信息。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答