iT邦幫忙

0

(已解決)部署在 Server 上的 Web 程式無法連線到 LocalDB (Express)

  • 分享至 

  • xImage

=====等安裝東西來編輯一下=====
因為我們有兩個人在測這東西,
一開始部署是遇到其他問題,
所以我們有把在自己公司 server 上的專案拉進來測,
所以…"""IIS 上有改路徑""",
後續我接手後,
因為那個錯誤訊息一直是 connectString,
而且系統訊息有變,
我就沒意識到是路徑錯誤,
所以不管怎樣改當然都是錯,
改正確的後就成功連線。

乾 鬼打牆,我晚上要去拜拜一下。
/images/emoticon/emoticon02.gif
==========以下已解決=========
因最近要測試系統從客戶的資料庫撈特定資料,
所以客戶那邊有開一台 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

  1. Application '/LM/W3SVC/2/ROOT' with physical root 'IIS讀取路徑' hit unexpected managed exception, exception code = '0xe0434352'. First 30KB characters of captured stdout and stderr logs: Unhandled exception. 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): 找不到網路路徑。

看起來簡單來說就是連線字串的問題,
附上我的 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 有回傳我想要的東西…
/images/emoticon/emoticon20.gif

搜尋錯誤大多針對的是連線字串跟"遠端"的 SQL Server,
我不太確定是 DB 設定問題還是我們系統設定問題,
再麻煩有經驗的大大幫忙指點迷津。

mathewkl iT邦高手 1 級 ‧ 2021-11-17 09:36:19 檢舉
Server名稱連線字串改用localhost?
yorklin iT邦新手 5 級 ‧ 2021-11-17 09:40:32 檢舉
試過了,錯誤訊息一樣,網路上什麼改成 IP、TCP:Name 我好像都試過了。
另外用 SSMS 的話,localhost or 名稱都能登入
yorklin iT邦新手 5 級 ‧ 2021-11-17 09:42:45 檢舉
我正在思考是不是 SQL Express 設定了什麼東西,可是我記得我都沒特別調什麼很輕易就能連上了,而且 console 程式也能連…更傻眼了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-11-17 10:06:02
最佳解答
yorklin iT邦新手 5 級 ‧ 2021-11-17 10:52:26 檢舉

鬼打牆了,我們都忘了路徑改了,改天找間靈的廟拜一拜==

恭喜今天又提昇一些經驗值

我要發表回答

立即登入回答