AttachDbFilename有什么问题

fre*_*hie 7 sql-server asp.net

显然,使用AttachDbFilenameuser instance连接字符串是连接数据库的一种不好的方法.我在我的本地机器上使用SQL server express,这一切似乎都运行正常.但是,连接到SQL服务器的正确方法是什么呢?

谢谢你的解释.

Aar*_*and 12

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

本文将更深入地介绍如何使用此功能,但请注意第一个注意事项:User Instance功能已被弃用.在SQL Server 2012中,首选的替代方案是(按此顺序,恕我直言):

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

  2. 使用SqlLocalDb当地发展.我相信我昨天向您指出了这篇文章:" SQL Server 2012 Express LocalDB入门 ".

  3. 使用SQL Server Compact.我最喜欢这个选项,因为功能和语法不一样 - 所以它不一定会为你提供你最终想要部署的所有功能.Compact Edition也被弃用了,所以就是这样.

当然,如果您使用的是<SQL Server 2012版本,SqlLocalDb则不是一个选项 - 因此您应该创建一个真实的数据库并一致地使用它.我只提到Compact选项的完整性 - 我认为这几乎和使用一样糟糕AttachDbFileName.

编辑:我在这里写了博客:

  • 将`AttachDbFileName = [...].mdf`更改为`Initial Catalog = MySite`(假设您为数据库提供了逻辑名称'MySite`). (2认同)