[英]Unable to connect to SQL Server in a C# program but system is able to connect
我正在嘗試連接到SQL Server2014。大約一個星期前,它似乎可以工作,但現在卻不起作用。 系統團隊最近確實升級到2014年。奇怪的是,我能夠使用SQL Server Management Studio進行連接,ODBC和telnet。 這只是C#的問題。 此外,此精確程序作為編譯/發行版在另一台服務器上運行。 它只是沒有使用調試(或完全編譯/發布)在我的系統上運行。
我檢查了文檔-禁用了所有防火牆,讓STP檢查服務器... nada
錯誤:
System.Data.dll中發生了類型為'System.Data.SqlClient.SqlException'的未處理的異常
附加信息:建立與SQL Server的連接時發生與網絡相關或特定於實例的錯誤。 服務器未找到或無法訪問。 驗證實例名稱正確,並且已將SQL Server配置為允許遠程連接。 (提供者:命名管道提供程序,錯誤:40-無法打開與SQL Server的連接)
我的C#代碼:
namespace SQLTest
{
class Program
{
static void Main(string[] args)
{
string connectionString = ConfigurationManager.ConnectionStrings["SQLConn"].ConnectionString;
string OrganizationSqlStr = @"SELECT * FROM school";
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(OrganizationSqlStr, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.Write(reader["School_ID"] + " | ");
Console.Write(reader["title"] + "\n\r");
}
Console.ReadKey();
}
}
}
app.config
:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<connectionStrings>
<add name="SQLConn"
connectionString="server=SERVER;database=DATABASE;uid=USERNAME;password=PASSWORD"/>
</connectionStrings>
</configuration>
我會嘗試強制.net程序使用tcp
http://www.connectionstrings.com/sqlconnection/
找到標有標簽的部分
通過IP地址連接
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;
Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
Network Library=DBMSSOCN
是神奇的糖。
也可以看看:
附加:
如果仍然產生錯誤,則可能是某些原因阻止了您的訪問。
這是確定的通用工具。
https://www.microsoft.com/en-us/download/details.aspx?id=24009
指定IP和端口號,它將告訴您該端口被阻止或過濾。
我的個人歷史是我們安裝了一個新路由器,該路由器正在過濾端口號並停止對SQL Server的訪問。 portqueryui揭示了問題。 PortQry在sql服務器的“外部”工作,因此網絡人員不能責怪sql-server缺乏連接性。
附加
OP在此答案的評論中發布了此內容
portqry.exe -n db-alexandrite.domain.edu -e 1433 -p TCP exits with return code 0x00000000
這是你的問題。 “ db-alexandrite.domain.edu”無法解析。
您可以通過將“ db-alexandrite.domain.edu”更改為該計算機的實際IP地址來修復它。
或弄清楚為什么“ db-alexandrite.domain.edu”無法解析。
請您的團隊檢查他們是否已啟用服務器的所有網絡協議。 應該啟用tcp或命名管道協議。
我最近用sql設置了一個新的測試服務器,並通過了通常的清單。
這4個步驟將消除大多數連接問題。 但是,在新服務器上,默認情況下Windows Defender將阻止。 我不得不在防御者中禁用私有和公開配置文件,因為它被阻止了。 由於我們不使用Windows Defender,所以可以。 但是,如果您依賴它,則需要創建一個規則。
<add name="SQLConn" connectionString="Data Source=SERVER;Integrated Security=False;User ID=USER;Password=PASSWORD;Initial Catalog=DATABASE" providerName="System.Data.SqlClient" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.