为什么使用C#以编程方式附加数据库失败?

时间:2019-01-26 13:07:27

标签: c# sql-server

我是SQL Server和C#的新手。我有Computer1,Windows7。我使用Windows Forms和SQL Server 2008 R2 Express。

我开发了一种软件,该软件稍后将在其他Windows计算机上运行,​​并且这些计算机将仅具有SQL Server数据库引擎(未安装Management Studio)。

我希望在程序启动时以编程方式附加数据库,而不是手动附加数据库。

我创建了一个文件夹(D:\MyFolder),并将mydb.mdfmydb.ldf文件放入其中(重新创建的数据库)。

然后,我使用以下代码将mydb数据库附加到服务器,并且已成功完成,并且可以从数据库中读取数据。我必须授予MyFolder的完全控制权限,否则该程序将引发数据库登录失败。

我还有Computer2,它的窗口和SQL Server版本与computer1完全相同。我从mdf复制了ldfcomputer1文件,并将它们粘贴到D:\MyFolder的{​​{1}}中,然后运行程序成功连接了数据库。

直到现在一切正常,两台计算机都已连接数据库。 现在,我转到computer2,转到computer2,右键单击数据库文件并删除它们,然后转到D:\MyFolder复制数据库文件并将其粘贴到computer1(在同一目录computer2中),当我运行该程序时,它说:

  

无法打开登录请求的数据库“ mydb”。登录失败。用户“计算机名/用户名”的登录失败

即使我在D:\MyFolder上授予所有人许可,它仍然会引发相同的错误。

我整天都在搜索,并且检查了以下答案:hereherehereherehere,但没有任何帮助。有人知道我该怎么做才能解决它?任何建议都会有所帮助。

MyFolder

2 个答案:

答案 0 :(得分:0)

在连接字符串中使用SQL Server的实例名称。

例如

如果您使用的是Express Edition,并且实例名称为SQLEXPRESS,则尝试使用localhost\SQLEXPRESS(local)\SQLEXPRESS而不是localhost

答案 1 :(得分:0)

答案取决于您的联系。

$('#toshow' ).click( function( e ) {
  $.post('?show=okay')
  .done(function(data) {
  });
});

根据文档

  

为true时,将使用当前Windows帐户凭据进行身份验证。

Windows帐户凭据很少能从一台计算机运行到另一台计算机。如果无法使用DDL(首选方式),则需要在数据库中使用用户名和密码,然后再导出文件。