我在.mdf文件中使用此代码作为备份数据库。
Backup databaseBackup = new Backup();
databaseBackup.Action = BackupActionType.Database;
databaseBackup.Database = CvVariables.Catalog;
databaseBackup.Devices.Add(new BackupDeviceItem(new NecessaryFunction().MsSqlBackupFileName(this.backupTextboxPath.Text), DeviceType.File));
Server databaseServer = new Server(@".\SQLEXPRESS");
MessageBox.Show(databaseServer.ToString());
databaseBackup.SqlBackup(databaseServer);
在我的开发者PC上,此代码运行正常。但是在我客户的电脑上却抛出了这个例外:
服务器'xxxxx / SQLEXPRESS的备份失败'
Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行Transact-SQL语句或批处理时发生异常。 ---> System.Data.SqlClient.SqlException:
数据库'Cafeteria_Vernier_db'不存在。确保名称是 输入正确。
BACKUP DATABASE异常终止。 在Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action,Object execObject,DataSet fillDataSet,Boolean catchException)
在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand,ExecutionTypes executionType)
---内部异常堆栈跟踪结束---
在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand,ExecutionTypes executionType)
在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands,ExecutionTypes executionType)
在Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection 查询)
在Microsoft.SqlServer.Management.Smo.BackupRestoreBase.ExecuteSql(服务器 server,StringCollection查询)
在Microsoft.SqlServer.Management.Smo.Backup.SqlBackup(Server srv)
我做错了什么?
答案 0 :(得分:0)
您在客户端PC上执行的安全上下文与开发人员PC上的安全上下文不同。验证您的客户端PC凭据是否可以访问Cafeteria数据库,否则它将获得无法找到它的相同消息(因为它无法访问它)。
我的猜测是客户端SQL Server登录在Cafeteria_Vernier_db
数据库中没有映射数据库用户。