C# 要连接的SQL Server问题

C# 要连接的SQL Server问题,c#,sql,wpf,C#,Sql,Wpf,我正在用C#和WPF开发一个程序。我希望数据存储在SQL Server数据库中。我在我的PC中创建了一个带有实例名的连接字符串,这很有效。但当我想用IP地址通过互联网连接时,我会遇到一些错误: 运行时发生与网络相关或特定于实例的错误 正在建立与SQL Server的连接。找不到服务器,或者 无法访问。请验证实例名称是否正确,以及 SQL Server配置为允许远程连接。(TCP提供程序, 错误0-无法建立连接,因为目标计算机 我主动拒绝了。) 我启用了TCP/IP,允许在SQL Configur

我正在用C#和WPF开发一个程序。我希望数据存储在SQL Server数据库中。我在我的PC中创建了一个带有实例名的连接字符串,这很有效。但当我想用IP地址通过互联网连接时,我会遇到一些错误:

运行时发生与网络相关或特定于实例的错误 正在建立与SQL Server的连接。找不到服务器,或者 无法访问。请验证实例名称是否正确,以及 SQL Server配置为允许远程连接。(TCP提供程序, 错误0-无法建立连接,因为目标计算机 我主动拒绝了。)

我启用了TCP/IP,允许在SQL Configuration Manager中进行远程连接,在防火墙中打开了1433端口,但仍然收到了此错误

我的连接字符串是:

String connString = @"Network Library=dbmssocn;
                     Network Address=127.0.0.1,1433;
                     Integrated security=SSPI;
                     Initial Catalog=db";

SqlConnection conn = new SqlConnection(connString);
conn.Open( );

我的错误在哪里?

将SQLServer配置为允许TCP/IP连接。转到SQLServer配置管理器->网络,然后转到SQLServer命名实例的协议->TCP/IP

看这张图片


将SQLServer配置为允许TCP/IP连接。转到SQLServer配置管理器->网络,然后转到SQLServer命名实例的协议->TCP/IP

看这张图片


您的连接字符串中有一个非常小的错误,老实说,我不能为此责备您,因为SQL Server的运行方式非常奇怪。我不确定这个错误是在连接提供程序端还是SQL Server实例端。应用程序用于使用
dbmssocn
(Win32 Winsock TCP/IP)连接到SQL Server的网络库的名称应始终以大写字母表示。虽然我没有看到MS提供的任何相关MSDN文档来支持我的声明,但当我这样做时,它确实起了作用。下面是您应该用来修复错误的连接字符串

字符串connString=@“网络库=
DBMSSOCN
; 网络地址=127.0.0.11433; 综合安全=SSPI; 初始目录=db”


说真的,我在复制你的问题时被吓坏了,因为我不是从你的问题中复制连接字符串,而是从其他博客复制的:)。但结局好,一切都好。我还假设在键入此答案时,您连接到的sql server的默认(未命名实例)实例上实际上存在一个名为“db”的数据库。如果更改连接字符串中网络库名称的大小写没有帮助,请再次检查您要连接到的sql server默认实例的数据库“db”是否必须存在。如果您在安装中使用的是sql server的命名实例,那么该实例的名称也应该出现在连接字符串中。

您的连接字符串中有一个非常轻微的错误,老实说,我不能为此责备您,因为sql server的运行方式非常奇怪。我不确定这个错误是在连接提供程序端还是SQL Server实例端。应用程序用于使用
dbmssocn
(Win32 Winsock TCP/IP)连接到SQL Server的网络库的名称应始终以大写字母表示。虽然我没有看到MS提供的任何相关MSDN文档来支持我的声明,但当我这样做时,它确实起了作用。下面是您应该用来修复错误的连接字符串

字符串connString=@“网络库=
DBMSSOCN
; 网络地址=127.0.0.11433; 综合安全=SSPI; 初始目录=db”


说真的,我在复制你的问题时被吓坏了,因为我不是从你的问题中复制连接字符串,而是从其他博客复制的:)。但结局好,一切都好。我还假设在键入此答案时,您连接到的sql server的默认(未命名实例)实例上实际上存在一个名为“db”的数据库。如果更改连接字符串中网络库名称的大小写没有帮助,请再次检查您要连接到的sql server默认实例的数据库“db”是否必须存在。如果您在安装中使用的是sql server的命名实例,则该实例名称也应包含在连接字符串中。

您使用的是端口49164而不是1433。我也尝试了1433端口,但仍然出现此错误。所以我尝试了动态TCP端口,但仍然出现了这个错误。为什么不尝试关闭防火墙,看看这是否解决了问题,并缩小了问题的范围?如果是,我们可以进行配置?我在Intenternet上读到,防病毒或防火墙可能是问题所在。我把它们都翻了,但仍然是同一个错误,我想你必须使用数据源=127.0.0.11433;您正在使用端口49164而不是1433。我也尝试了1433端口,但仍然出现此错误。所以我尝试了动态TCP端口,但仍然出现了这个错误。为什么不尝试关闭防火墙,看看这是否解决了问题,并缩小了问题的范围?如果是,我们可以进行配置?我在Intenternet上读到,防病毒或防火墙可能是问题所在。我把它们都翻了,但仍然是同一个错误,我想你必须使用数据源=127.0.0.11433;而不是网络地址。我从一开始就启用了它。我从一开始就启用了它。我可以使用此连接字符串从另一台未安装SQL SERVER但我的c#应用程序正在运行RBT的电脑进行连接,我可以使用此连接字符串从另一台未安装SQL SERVER的电脑进行连接,但我的c#应用程序正在运行