Asp.net

AttachDbFilename 有什麼問題

  • December 28, 2021

顯然,在連接字元串中使用AttachDbFilenameanduser instance是連接數據庫的不好方法。我在我的本地機器上使用 SQL server express,它似乎工作正常。但是,那麼連接到 SQL 伺服器的正確方法是什麼?

謝謝你的解釋。

UsingUser Instance意味著 SQL Server 正在創建該數據庫文件的特殊副本以供您的程序使用。如果您有兩個不同的程序使用相同的連接字元串,它們將獲得兩個完全不同的數據庫副本。這會導致很多混亂,因為人們將使用他們的程序測試更新數據,然後在 Management Studio 中連接到他們數據庫的不同副本,並抱怨他們的更新不起作用。這使他們經歷了一系列有缺陷的野鵝追逐步驟,試圖解決錯誤的問題。

本文更深入地介紹瞭如何使用此功能,但請注意第一個注意事項:User Instance功能已被棄用。在 SQL Server 2012 中,首選的替代方案是(按此順序,恕我直言):

  1. 創建或將您的數據庫附加到 SQL Server 的真實實例。然後,您的連接字元串將只需要指定實例名稱、數據庫名稱和憑據。不會有混淆,因為 Management Studio、Visual Studio 和您的程序都將連接到數據庫的單個副本。
  2. 使用容器進行本地開發。這是Anna Hoffman 和 Anthony Nocentino的精彩入門影片,我還有一些其他資源在這裡這里這裡。如果您使用的是 M1 Mac,您將無法使用成熟的 SQL Server 實例,但如果您可以使用大多數SQL Server 功能(此處列舉了遺漏),則可以使用 Azure SQL Edge。
  3. 用於SqlLocalDb本地開發。我相信我昨天向您指出了這篇文章:“ SQL Server 2012 Express LocalDB 入門”。
  4. 使用SQL Server 緊湊。我最不喜歡這個選項,因為功能和語法不一樣 - 所以它不一定會為您提供您最終想要部署的所有功能。精簡版也已被棄用,所以就是.

當然,如果您使用的版本 < SQL Server 2012,SqlLocalDb則不是一種選擇——因此您應該創建一個真正的數據庫並始終如一地使用它。為了完整性,我只提到了 Compact 選項——我認為這幾乎和使用AttachDbFileName.

**編輯:**我在這裡寫過關於這個的部落格:

引用自:https://stackoverflow.com/questions/11178720