导入和导出数据mdf sqlserver

时间:2017-02-23 16:29:36

标签: c# sql-server mdf

我有一个本地数据库" 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" 

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

1 个答案:

答案 0 :(得分:1)

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

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

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