关于C#:SQL Server连接问题

SQL Server problems to connect

我正在用C#和WPF开发程序。 我希望将数据存储在SQL Server数据库中。 我在PC上用实例名称创建了一个连接字符串,并且可以正常工作。 但是,当我想使用IP地址通过Internet连接时,会出现一些错误:

A network-related or 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. (TCP Provider,
error 0 - No connection could be made because the target machine
actively refused it.)

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

我的连接字符串是这样的:

1
2
3
4
5
6
7
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( );

我的错误在哪里?


您的连接字符串中有一个很小的错误,说实话我不能怪您,因为这是SQL Sever行为的一种非常怪异的方式。我不确定此错误是在连接提供程序端还是在SQL Server实例端。您的应用程序用来使用dbmssocn连接到SQL Server的网络库的名称(Win32 Winsock TCP / IP)应该始终以大写字母提及。尽管我没有从MS那里获得任何相关的MSDN文档来支持我的陈述,但是当我这样做时,它实际上是有效的。这是修复错误应使用的连接字符串。

字符串connString = @"网络库= dbmssocn;
网络地址= 127.0.0.1,1433;
集成安全性= SSPI;
初始目录= db";

认真地说,我很想重现您的问题,而不是从您的问题中复制连接字符串,而是从其他博客中复制它:)。但是一切顺利,一切顺利。我还假设在键入此答案时,您要连接的SQL Server的默认实例实例(未命名实例)上实际存在一个名为" db"的数据库。如果更改连接字符串中网络库名称的大小写无济于事,请仔细检查数据库" db"对于要连接到的SQL Server默认实例是否必须存在。如果您在安装中使用sql服务器的命名实例,则该实例名称也应包含在连接字符串中。


配置您的SQLServer允许TCP / IP连接。转到SQLServer Configuration Manager->网络,然后转到SQLServer命名实例的协议-> TCP / IP。

看到这张图片!

SQL Server configuration manager protocol configuration