AttachDbFilename 有什么问题

2023-12-25

显然,使用AttachDbFilename and user instance在连接字符串中是连接到数据库的糟糕方法。我在本地计算机上使用 SQL Server Express,一切似乎都工作正常。但是连接到 SQL Server 的正确方法是什么?

谢谢你的解释。


Using User Instance意味着 SQL Server 正在创建该数据库文件的特殊副本以供您的程序使用。如果您有两个不同的程序使用相同的连接字符串,它们将获得数据库的两个完全不同的副本。这导致了lot混乱,因为人们会使用他们的程序测试更新数据,然后连接到 Management Studio 中数据库的不同副本,并抱怨他们的更新不起作用。这让他们经历了一系列有缺陷的徒劳无功的追逐步骤,试图解决错误的问题。

本文将更深入地介绍如何使用此功能 http://msdn.microsoft.com/en-us/library/ms143684.aspx,但请注意第一个注释:the User Instance该功能已被弃用。在 SQL Server 2012 中,首选替代方案是(按此顺序,恕我直言):

  1. 创建数据库或将数据库附加到 SQL Server 的真实实例。然后,您的连接字符串只需要指定实例名称、数据库名称和凭据。不会出现混淆,因为 Management Studio、Visual Studio 和您的程序都将连接到数据库的单个副本。

  2. 使用容器进行本地开发。这是一个很棒的安娜·霍夫曼 (Anna Hoffman) 和安东尼·诺琴蒂诺 (Anthony Nocentino) 制作的入门视频 https://learn.microsoft.com/en-us/shows/Data-Exposed/Learn-How-to-Deploy-SQL-Server-2019-in-Containers-in-Just-Minutes,我还有一些其他资源here https://www.sentryone.com/blog/aaronbertrand/vs-code-mac-sql-linux-docker, here https://sqlblog.org/2021/07/13/t-sql-tuesday-140-containers, and here https://sqlblog.org/2020/03/15/attaching-restoring-databases-inside-a-container。如果您使用的是 M1 Mac,您将无法使用成熟的 SQL Server 实例,但如果您可以使用 Azure SQL Edge,则可以使用mostSQL Server 功能(此处列举遗漏之处 https://learn.microsoft.com/en-us/azure/azure-sql-edge/features).

  3. Use SqlLocalDb为了当地的发展。我相信我昨天向您指出了这篇文章:“SQL Server 2012 Express LocalDB 入门 http://www.mssqltips.com/sqlservertip/2694/getting-started-with-sql-server-2012-express-localdb/?utm_source=AaronBertrand."

  4. Use SQL Server 紧凑型 http://msdn.microsoft.com/en-us/library/aa983341.aspx。我最不喜欢这个选项,因为功能和语法不一样 - 所以它不一定会为您提供最终想要部署的所有功能。精简版也已被弃用,所以就是这样 https://stackoverflow.com/a/20364011/61305.

当然,如果您使用的版本SqlLocalDb不是一个选项 - 所以您应该创建一个真正的数据库并一致地使用它。为了完整性,我只提到“紧凑”选项 - 我认为这几乎和使用“紧凑”选项一样糟糕AttachDbFileName.

EDIT:我在这里写了一篇博客:

  • 坏习惯:使用 AttachDBFileName http://blogs.sqlsentry.com/aaronbertrand/bad-habits-attachdbfilename/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AttachDbFilename 有什么问题 的相关文章

随机推荐