Saturday 15 June 2013

c# - Transfering Data by SMO failing when using ObjectList -



c# - Transfering Data by SMO failing when using ObjectList -

i can transfer info source db target db using alternative copyalltables = true , not providing list in objectlist.

serverconnection conn = new serverconnection(sourceserver); conn.loginsecure = true; server srvsource = new server(conn); database dbsource = srvsource.databases[sourcedb]; transfer xfr = new transfer(dbsource); xfr.copyalltables = true; xfr.options.withdependencies = false; xfr.options.continuescriptingonerror = false; xfr.destinationdatabase = destdb; xfr.destinationserver = destserver; xfr.options.driallkeys = true; xfr.options.driforeignkeys = true; xfr.destinationloginsecure = true; xfr.copyschema = false; xfr.copydata = true; xfr.transferdata();

this works , info copied target db. need exclude 1 table re-create process. tried

serverconnection conn = new serverconnection(sourceserver); conn.loginsecure = true; server srvsource = new server(conn); database dbsource = srvsource.databases[sourcedb]; transfer xfr = new transfer(dbsource); xfr.copyalltables = false; xfr.options.withdependencies = false; xfr.options.continuescriptingonerror = false; xfr.destinationdatabase = destdb; xfr.destinationserver = destserver; xfr.options.driallkeys = true; xfr.options.driforeignkeys = true; xfr.destinationloginsecure = true; foreach (table tb in dbsource.tables) { if (tb.issystemobject == false && tb.name != "excludedtable" ) { xfr.objectlist.add(tb); } } xfr.copyschema = false; xfr.copydata = true; xfr.transferdata();

when transferdata called exception "system.nullreferenceexception" , no info transfered

{"der objektverweis wurde nicht auf eine objektinstanz festgelegt."} [system.nullreferenceexception]: {"der objektverweis wurde nicht auf eine objektinstanz festgelegt."} data: {system.collections.listdictionaryinternal} helplink: null hresult: -2147467261 innerexception: null message: "der objektverweis wurde nicht auf eine objektinstanz festgelegt." source: "microsoft.sqlserver.smoextended" stacktrace: " bei microsoft.sqlserver.management.smo.transfer.getobjectlist()\r\n bei microsoft.sqlserver.management.smo.transfer.microsoft.sqlserver.management.common.itransfermetadataprovider.savemetadata()\r\n bei microsoft.sqlserver.management.dts.dtstransferprovider.configure(itransfermetadataprovider metadataprovider)\r\n bei microsoft.sqlserver.management.smo.transfer.gettransferprovider()\r\n bei microsoft.sqlserver.management.smo.transfer.transferdata()\r\n targetsite: {microsoft.sqlserver.management.smo.dependencycollection getobjectlist()}

how can exclude "excludedtable" export?

except xfr.copyalltables = false; must set:

xfr.copyallobjects = false;

it set default true , reason error get. if omit line null reference exception mention.

(verified code , working 110\sdk\assemblies)

c# sql-server-2008 smo

No comments:

Post a Comment