我正在尝试创建一个 Windows应用程序,使用Transfer对象将数据库从一个服务器复制到另一个服务器
但最终导致“未安装Integration Services组件或您没有使用它的权限”错误. 两台服务器都安装了sql server 2005的企业版,并且安装了集成服务组件,连接登录也具有完全权限.我真的不知道这里出了什么问题Server backFromServer = new Server(@"xx.xx.xx.xx"); Server backToServer = new Server(@"xx.xx.xx.xx"); backFromServer.ConnectionContext.LoginSecure = false; backFromServer.ConnectionContext.Login = "username"; backFromServer.ConnectionContext.Password = "password"; backToServer.ConnectionContext.LoginSecure = false; backToServer.ConnectionContext.Login = "username"; backToServer.ConnectionContext.Password = "password"; Database backFromDb = new Database(); backFromDb = backFromServer.Databases["databasesource"]; Database backToDb = new Database(); backToDb = backToServer.Databases["databasedest"]; EventLog.WriteEntry(eventLogSource,"Loading databases successful!", EventLogEntryType.Information); Transfer dataTransfer = new Transfer(backFromDb); dataTransfer.CopyAllTables = true; dataTransfer.CopyAllObjects = false; dataTransfer.CopyData = true; dataTransfer.CopyAllUserDefinedDataTypes = true; dataTransfer.CopyAllStoredProcedures = false; dataTransfer.DropDestinationObjectsFirst = true; dataTransfer.Options.WithDependencies = false; dataTransfer.DestinationServer = backToServer.Name; dataTransfer.DestinationDatabase = backToDb.Name; dataTransfer.DestinationLoginSecure = false; dataTransfer.DestinationLogin = "username"; dataTransfer.DestinationPassword = "password"; EventLog.WriteEntry(eventLogSource,"Transfer configuration successful, starting to transfer!", EventLogEntryType.Information); dataTransfer.TransferData();//here causes the error EventLog.WriteEntry(eventLogSource, "Transfer successful!", EventLogEntryType.Information);
我设法找到了解决方案
所以应用程序执行此操作:步骤1.使用Backup类将数据库备份到.bak文件中Server backFromServer = new Server(@"server"); backFromServer.ConnectionContext.LoginSecure = false; backFromServer.ConnectionContext.Login = "un"; backFromServer.ConnectionContext.Password = "psd"; Database backFromDb = new Database(); backFromDb = backFromServer.Databases["dbname"]; Backup bkpDatabase = new Backup(); bkpDatabase.Action = BackupActionType.Database; bkpDatabase.Database = backFromDb.Name; bkpDatabase.Incremental = false; bkpDatabase.LogTruncation = BackupTruncateLogType.Truncate; bkpDatabase.Initialize = true; BackupDeviceItem bkpDevice = new BackupDeviceItem(@"c:\backup.bak", DeviceType.File); bkpDatabase.Devices.Add(bkpDevice); bkpDatabase.SqlBackup(backFromServer); EventLog.WriteEntry(eventLogSource, "Create database backup file successful!", EventLogEntryType.Information);
步骤2.由于文件位于源服务器中,请下载该文件.
步骤3.使用t-sql恢复数据库.步骤4.启动每天运行应用程序的计划任务. 这是t-sql脚本:使用大师ALTER DATABASE [DBName] SET Single_User WITH Rollback ImmediateRESTORE DATABASE [DBName] FROM DISK = N’filepath’WOR REPLACE,FILE = 1,NOUNLOAD,STATS = 10ALTER DATABASE [DBName] SET Multi_User 创建一个sql作业,通过执行备份来完成工作.恢复,日志传送,SQL复制等.听起来不像你想要通过每天运行的应用程序来解决的问题,而是一个sql作业,这将更可靠,得到监控,免费诊断,更不用说你了将需要以高权限运行您的应用程序,这本身就是一个不好的做法和一个麻烦的呼吁.查看更多关于使用c#将数据库从一台服务器复制到另一台的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did69275