显然,在连接字符串中使用AttachDbFilename和用户实例是连接到数据库的一种不好的方法.我在我的本地机器上使用sql server express,这一切似乎都运行正常.但是,连接到sql服务器的正确方法是什么呢?
谢谢你的解释.
解决方法
使用用户实例意味着sql Server正在创建该数据库文件的特殊副本以供程序使用.如果您有两个使用相同连接字符串的不同程序,则它们会获得两个完全不同的数据库副本.这会导致很多混乱,因为人们会测试用他们的程序更新数据,然后在Management Studio中连接到他们数据库的不同副本,并抱怨他们的更新不起作用.这使他们通过一系列有缺陷的野鹅追逐步骤试图解决错误的问题.
This article goes into more depth about how to use this feature,但注意到第一个注意事项:用户实例功能已被弃用.在sql Server 2012中,首选的替代方案是(按此顺序,恕我直言):
>创建数据库或将数据库附加到sql Server的实际实例.然后,您的连接字符串只需指定实例名称,数据库名称和凭据.由于Management Studio,Visual Studio和您的程序都将连接到数据库的单个副本,因此不会混淆.
>使用sqlLocalDb进行本地开发.我相信我昨天指的是这篇文章:“Getting Started with SQL Server 2012 Express LocalDB.”
>使用SQL Server Compact.我最喜欢这个选项,因为功能和语法不一样 – 所以它不一定会为你提供你最终想要部署的所有功能. Compact Edition is also deprecated,so there’s that.
当然,如果你使用的是版本< sql Server 2012,sqlLocalDb不是一个选项 - 所以你应该创建一个真正的数据库并一致地使用它.我只提到Compact选项的完整性 - 我认为这与使用AttachDbFileName几乎一样糟糕. 编辑:我在这里写了博客:
> Bad Habits : Using AttachDBFileName