未安装Integration Services组件,或者您无权使用它

时间:2016-08-22 06:26:11

标签: c# sql sql-server smo

因为我使用SMO将数据从一个数据库复制到另一个数据库。我使用了自己的DB帮助程序类。我转移数据时遇到异常。

未安装Integration Services组件,或者您无权使用它。

我的代码如下:

DBHelper.SourceSQLServer = @"DESKTOP-PCEOPRM\SQLEXPRESS";

//Set Your Database Name Here (To Be Copied or Scripted)
DBHelper.SourceDatabase = "MetisEmptyDB";

////Set Destination SQL Server Name Here
DBHelper.DestinationSQLServer = @"DESKTOP-PCEOPRM\SQLEXPRESS";

//Set New Database Name Here 
DBHelper.DestinationDatabase = "NewDb";

//Set True if you want to copy Data
//Set False if you want to copy Only Schema
DBHelper.CopyDatabase(true);
Console.WriteLine("Scripting Finished");

在主要功能上我称之为

parse

提前致谢。如果您发现在C#中使用现有的数据库创建新数据库的任何其他替代方法,请分享代码。

2 个答案:

答案 0 :(得分:1)

For me this error went away when I changed my dependency from SQL Server 2008 Express to SQL Server 2012 Express.

I referenced the assemblies in

aggregate(levels_together ~ group_by_var + kernel_type, data=df, FUN=mean)
  group_by_var kernel_type levels_together
1          fif           b          0.0495
2          sev           b          0.0515
3           tw           b          0.0530
4          fif           e          0.0480
5          sev           e          0.0555
6           tw           e          0.0575
7          fif           p          0.0475
8          sev           p          0.0505
9           tw           p          0.0525

Not

@ControllerAdvice
public static class GenericExceptionHandlers extends ResponseEntityExceptionHandler {

    @Override
    protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException e, HttpHeaders headers, HttpStatus status, WebRequest request) {
        return new ResponseEntity<>(new ErrorDTO().setError(e.getMessage()), HttpStatus.BAD_REQUEST);
    }
}

If you are able to change the dependency then it works.

答案 1 :(得分:0)

线索出现错误。您正在尝试使用SQL Server Integration Services的代码,但SQL Server Express中未包含该代码。

使用T-SQL也可以轻松实现这些功能。您也可以轻松创建新的空数据库并编写对象脚本。或者备份和恢复数据库。

我不应该在stackoverflow中发布代码,因为最好在dba.stackexchange.com上询问

BACKUP DATABASE AdventureWorks2012   
 TO DISK = 'C:\SQLServerBackups\AdvWorksData.bak' 
 WITH FORMAT;

并在其他服务器上恢复

RESTORE DATABASE AdventureWorks2012  
  FROM DISK = 'C:\SQLServerBackups\AdventureWorks2012.bak';

在尝试通过C#执行此操作之前,请确保您了解在SQL中执行的操作。如果您按照之前的问题中的建议使用SQLCMD手动完成所有sql,您将了解有关SQL的更多信息。