2009-05-19 26 views
0

SQL Server SMOの転送クラスのTransferDataメソッドを使用しています。 私は、SQL Server 2000 SP1から別のサーバーのテーブルをXPマシンに転送しようとすると、SQL Server 2008 SP1を実行しているWindows XP上でコールを実行しています。どちらも同じSQLユーザー名とパスワードを使用します。私はインポート/エクスポートウィザードを使用してテストし、それは正常に実行されました。SQL Server SMO TransferData()が失敗し続ける

以下の例外があり、イベントログに "Package"というエントリがあります。ShellPackage "failed"エラー。

例外エラーは、クエリーのプロパティが空白であり、代用されていないことを示しています。私は一部のDTS作品が失敗していると推測していますが、どのような理由がわからないのです。

例外: "エラー:errorCode = -1073548784 description =次のエラーでクエリを実行できませんでした:\" ''の型の初期化子が例外をスローしました。 helpFile = helpContext = 0 idofInterfaceWithError = {C81DFC5A-3B22-4DA3-BD3B-10BF861A7F9C} "

"、クエリ "\" ResultSet \ "プロパティが正しく設定されていないか、パラメータが正しく設定されていないか、

マイコード:

try 
      { 
       string MasterUser = ConfigurationSettings.AppSettings["SQLUserName"]; 
       string MasterPassword = ConfigurationSettings.AppSettings["SQLPassword"]; 


       Server server = new Server(SourceServer); 
       server.ConnectionContext.LoginSecure = false; 
       server.ConnectionContext.Login = MasterUser; 
       server.ConnectionContext.Password = MasterPassword; 

       Database databaseSource = server.Databases[SourceDatabaseName]; 


       Transfer transfer = new Transfer(databaseSource); 
       transfer.CopyAllObjects = false; 
       transfer.DropDestinationObjectsFirst = false; 
       transfer.UseDestinationTransaction = true; 

       if (IsBasic) 
       { 
        transfer.CopyAllDefaults = false; 
        transfer.Options.Indexes = false; 
        transfer.Options.DriAll = false; 
        transfer.CopyAllDefaults = false; 
       } 
       else 
       { 
        transfer.CopyAllDefaults = true; 
        transfer.Options.Indexes = true; 
        transfer.Options.DriAll = true; 
        transfer.CopyAllDefaults = true; 
       } 

       transfer.Options.AnsiFile = true; 
       transfer.Options.SchemaQualify = true; 
       transfer.Options.WithDependencies = false; 
       transfer.CreateTargetDatabase = false; 
       transfer.CopySchema = true; 

       if (CopyData) 
        transfer.CopyData = true; 
       else 
        transfer.CopyData = false; 

       transfer.DestinationServer = DestinationServer; 
       transfer.DestinationDatabase = DestinationDatabaseName; 
       transfer.DestinationLoginSecure = false; 
       transfer.DestinationLogin = MasterUser; 
       transfer.DestinationPassword = MasterPassword; 


       //find the able object 
       foreach (Table table in databaseSource.Tables) 
       { 
        if (table.Name == TableName) 
        { 
         tableToTransfer = table; 
         break; 
        } 
       } 

       transfer.Options.IncludeIfNotExists = true; 
       transfer.ObjectList.Add(tableToTransfer); 
       transfer.TransferData(); 
      } 
      catch (DbException dbExp) 
      { 
       throw new FaultException(dbExp.Message); 
      } 
      catch (Exception ex) 
      { 
       throw new FaultException(ex.Message); 
      } 

答えて

0

WCFサービス(上記のコード)をホスティングサービスは、ドメインユーザーの下で実行する必要がありました。

関連する問題