我已使用Visual Studio内置功能向我的应用程序添加了一个数据库文件(.mdf
)。数据库位于App_Data
文件夹中。它运行正常。但是当我发布它并将其上传到服务器时,就会出现这个错误。
发生与网络相关或特定于实例的错误 建立与SQL Server的连接。找不到服务器或 无法访问。验证实例名称是否正确 SQL Server配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 查找服务器/实例时出错 指定)
我访问了类似的情况,但很困惑。我不知道SQL Server的哪个版本和版本正在服务器上运行。我使用Filezilla上传项目。我的web.config
中的连接字符串如下:
<add name="ConnectionString"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient"/>
请逐步描述流程。
提前致谢。
答案 0 :(得分:3)
整个用户实例和AttachDbFileName = 方法存在缺陷 - 充其量!此外,它仅受SQL Server的 Express 版本支持 - 因此,如果您的主机具有除 Expres 之外的其他任何内容,那么您基本上就是搞砸了。
我认为真正的解决方案将是
安装SQL Server Management Studio Express
在 SSMS Express 中创建数据库,为其指定一个逻辑名称(例如MyDatabase
)
使用其逻辑数据库名称(在服务器上创建时给定)连接到它 - 并且不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=MyDatabase;Integrated Security=True
其他所有内容都完全与以前相同......
现在,当您将网站上传到托管网站时,您需要获取必要的SQL脚本来在托管网站上创建和填充数据库 - 您可以使用Tasks > Generate Scripts
中的Server=(ip-address-or-name);Database=MyDatabase;User ID=YourUserIdHere;Pwd=YourPassword
来完成此操作。 SSMS Express工具,或通过其他方式。
然后,在托管站点上,您需要执行这些SQL脚本来创建和填充数据库(稍后:执行更改脚本以使数据库保持最新)。
您的连接字符串也很可能会改为:
SQLEXPRESS
因为托管服务提供商不使用{{1}}命名实例(但很可能是没有任何名称的默认实例)。您需要向提供商询问详细信息 - 可能是您必须提供其他实例名称!这完全取决于提供者,我们无法知道 - 你必须要求并找出答案。
答案 1 :(得分:1)
我的修复是确保我在解决方案中有正确的启动项目集。右键单击项目和&#34;设置为启动项目&#34;