【问题标题】:Import and Export data mdf sqlserver导入导出数据 mdf sqlserver
【发布时间】:2017-02-23 16:29:36
【问题描述】:

我有一个本地数据库“office.mdf” 我希望我的应用程序能够导出数据库并再次导入 我尝试使用备份查询来实现这一点

DB.ExecuteNonQuery(@"BACKUP DATABASE [" + Directory.GetCurrentDirectory() + @"\office.mdf] TO DISK = N'" + distination + "'");

并恢复查询

 DB.ExecuteNonQuery(@"USE [master]; RESTORE DATABASE [" + Directory.GetCurrentDirectory() + @"\office.mdf] " + 
        @"FROM DISK = N'" + source + "'  WITH FILE = 1 , NOUNLOAD, REPLACE, STATS = 10 , NORECOVERY , " +
        @" MOVE 'office_log' TO '" +  Directory.GetCurrentDirectory() + @"\office_log.ldf'" +
        @" MOVE 'office' TO '" + Directory.GetCurrentDirectory() + @"\office.mdf'");

我构建了我的项目并在另一台设备上运行它然后我导出数据库,我成功导入了数据库,但之后我无法再连接到数据库并且我收到消息说

Login failed for user "myuser" 

所以首先我该如何解决这个问题 之后,导出数据库并将其从另一台设备导入回来的最佳方法是什么 如何将现有数据库与导出的时间合并(这样我就不会丢失现有数据)

【问题讨论】:

标签: c# sql-server mdf


【解决方案1】:

在 SQL Server 中,登录名存储在主数据库中的实例级别,而用户存储在每个用户数据库中并映射到登录名。

听起来您尝试用于访问数据库的登录名在目标服务器上不存在,或者 SID 不匹配(通常使用 sp_change_users_login 进行更正)。

一种选择是使用 CREATE LOGIN ... WITH SID,并在您将恢复此数据库的所有服务器上使用相同的 SID。

【讨论】:

  • 我想我正在搜索 SID 以避免这个问题,非常感谢你
  • 这回答了你的问题吗?
  • 它很有用,但不幸的是它没有,因为主要问题是我想在数据库之间导出和导入数据,无论如何谢谢
  • 您的问题似乎与恢复备份和安全性有关。您想添加更多详细信息,说明您正在尝试完成什么以及哪些无效?
  • 我的主要问题是我想将数据库从设备导出和导入到另一个设备,但我尝试使用备份查询来做到这一点,所以我想问是否有其他方法可以实现这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多