本文可帮助你解决在使用 TCP/IP 以外的协议连接到 1433 以外的端口上的 SQL Server 时发生的问题。
原始产品版本: Visual C#
原始 KB 数: 307645
现象
使用传输控制协议/Internet 协议(TCP/IP)以外的协议时, SqlConnection.Open
如果指定了 1433 以外的端口号来连接到 SQL Server 实例,则失败。
解决方法
若要解决此问题,请使用 TCP/IP 协议,并将其包含在Server=ComputerName, PortNumber
连接字符串中。
重现行为的步骤
启动 Visual Studio .NET。
创建新的 Visual C# .NET 控制台应用程序项目。
确保项目包含对命名空间的
System.Data
引用,并添加对此命名空间的引用(如果没有)。对
System.Data System.Data.SqlClient
> 命名空间使用 using 语句System
,以便你无需在代码后面限定这些命名空间中的声明。using System; using System.Data; using System.Data.SqlClient;
默认情况下,Visual Studio 会创建一个静态类和一个空
Main
过程。 复制以下代码,并将其粘贴到“代码”窗口中:注意
运行此代码之前,必须将值和密码
<strong password>
值更改为User ID
<username>
正确的值。 请确保User ID
具有对数据库执行此操作的适当权限。class Class1 { static void Main(string[] args) { string sConnectionString; sConnectionString = "User ID=<username>;Password =<strong password>;Initial Catalog=pubs;Data Source=myServer,1200"; SqlConnection objConn = new SqlConnection(sConnectionString); objConn.Open(); SqlDataAdapter daAuthors = new SqlDataAdapter("Select * From Authors", objConn); DataSet dsPubs = new DataSet("Pubs"); daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors"); daAuthors.Fill(dsPubs, "Authors"); daAuthors.MissingSchemaAction = MissingSchemaAction.AddWithKey; daAuthors.Fill(dsPubs, "Authors"); DataTable tblAuthors; tblAuthors = dsPubs.Tables["Authors"]; foreach (DataRow drCurrent in tblAuthors.Rows) { Console.WriteLine("{0} {1}", drCurrent["au_fname"].ToString(), drCurrent["au_lname"].ToString()); } Console.ReadLine(); } }
sConnectionString
根据环境修改字符串。保存你的项目。
在“调试”菜单上,单击“开始”,然后运行项目以连接到数据库。