=====等安裝東西來編輯一下=====
因為我們有兩個人在測這東西,
一開始部署是遇到其他問題,
所以我們有把在自己公司 server 上的專案拉進來測,
所以…"""IIS 上有改路徑""",
後續我接手後,
因為那個錯誤訊息一直是 connectString,
而且系統訊息有變,
我就沒意識到是路徑錯誤,
所以不管怎樣改當然都是錯,
改正確的後就成功連線。
乾 鬼打牆,我晚上要去拜拜一下。
==========以下已解決=========
因最近要測試系統從客戶的資料庫撈特定資料,
所以客戶那邊有開一台 Server + 安裝 SQL Express 供我們系統測試,
但不太清楚為什麼怎樣測都無法連線到資料庫,
開事件檢視都會有三種錯誤
1.Application: w3wp.exe CoreCLR Version: 5.0.1221.52207 .NET Version: 5.0.12 Description: The process was terminated due to an unhandled exception. Exception Info: Microsoft.Data.SqlClient.SqlException (0x80131904): 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. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) ---> System.ComponentModel.Win32Exception (53): 找不到網路路徑。
2.Application '/LM/W3SVC/2/ROOT' with physical root 'IIS讀取路徑' failed to load coreclr. Exception message: CLR worker thread exited prematurely
看起來簡單來說就是連線字串的問題,
附上我的 appsetting 中的 connectstring
"ConnectionStrings": {
"DefaultConnection": "data source=Server名稱\\SQLEXPRESS;initial catalog=DB1;user id=sa;password=密碼;Trusted_Connection=False;MultipleActiveResultSets=trueIntegrated Security=False",
"MidDbConnection": "Data Source=Server名稱\\SQLEXPRESS;Initial Catalog=DB2;user id=sa;password=密碼;Trusted_Connection=False;MultipleActiveResultSets=trueIntegrated Security=False"
},
這格式在自己公司的 Server 上連同網域的 DB 是沒問題的,
差別只有把 IP 變成是 Server名稱\SQLEXPRESS 名稱而已,
所以我當作連線字串沒問題,
轉而查了服務中 SQL 有沒有開啟,
不過 SSMS 都能連,
所以服務中的 SQL 也是正常啟動中。
接下來我就想說是不是系統有問題,
我就寫了一支簡單的 Console 去測 DB 撈資料,
string connetionString;
SqlConnection cnn;
connetionString = @"Data Source={本機名稱}\SQLEXPRESS;Initial Catalog=DB;User ID=sa;Password=我是密碼";
cnn = new SqlConnection(connetionString);
cnn.Open();
SqlCommand sqlCommand;
SqlDataReader sqlDataReader;
string sql, result = "";
sql = @"SELECT *
FROM 資料庫Table;
sqlCommand = new SqlCommand(sql, cnn);
sqlDataReader = sqlCommand.ExecuteReader();
while (sqlDataReader.Read())
{
result = result + sqlDataReader.GetValue(0);
}
Console.WriteLine("SQL開啟");
Console.WriteLine(result);
cnn.Close();
Console.ReadKey();
乾…result 有回傳我想要的東西…
搜尋錯誤大多針對的是連線字串跟"遠端"的 SQL Server,
我不太確定是 DB 設定問題還是我們系統設定問題,
再麻煩有經驗的大大幫忙指點迷津。