Benötigen Sie Hilfe bei der Verbindung mit der Microsoft.SqlServer.Management.Smo Transfer-Klasse

Ich versuche alles zu kopieren (Daten, Indizes, Trigger, gespeicherte Prozeduren). Von einer Datenbank zur nächsten in C #.

Hier ist mein Code:

SqlConnection connection = new SqlConnection(ConnectionString);

Server myServer = new Server(new ServerConnection(connection));               

Database db = myServer.Databases[this._myDB];

if (myServer.Databases[this._newDB] != null)
   myServer.Databases[this._newDB].Drop();

Database newdb = new Database(myServer, this._newDB);
newdb.Create();

Transfer transfer = new Transfer(db);
transfer.CopyAllSchemas = false;
transfer.CopyAllStoredProcedures = true;
transfer.CopyAllTables = true;
transfer.CopyAllDatabaseTriggers = true;
transfer.CopyAllObjects = true;
transfer.CopyAllUsers = true;
transfer.Options.WithDependencies = true;
transfer.DestinationDatabase = newdb.Name;
transfer.DestinationServer = myServer.Name;
transfer.DestinationLoginSecure = false;
transfer.DestinationLogin = user;
transfer.DestinationPassword = pwd;
transfer.CopySchema = false;
transfer.CopyData = true;
transfer.Options.DriAll = true;
transfer.Options.Triggers = true;
transfer.Options.WithDependencies = true;
transfer.Options.ContinueScriptingOnError = true;

transfer.TransferData();

Ich erhalte folgenden Fehler:

errorCode = -1071636471 description = SSIS-Fehlercode DTS_E_OLEDBERROR. Ein OLE DB-Fehler ist aufgetreten. Fehlercode: 0x80004005.
Ein OLE DB-Datensatz ist verfügbar. Quell: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Beschreibung: "Anmeldung für Benutzer 'DOMAIN \ user' fehlgeschlagen.".
Ein OLE DB-Datensatz ist verfügbar. Quelle: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Beschreibung: "Die Datenbank myDB kann nicht geöffnet werden (ersetzt den Namen, ist aber korrekt)" wurde von der Anmeldung angefordert. Die Anmeldung ist fehlgeschlagen. "
helpFile = helpContext = 0 idofInterfaceWithError = {5BC870EB-BBA5-4B9D-A6E3-58C6D0051F14}

Das, was ich am ehesten mit einer Problemumgehung erreicht habe, ist Folgendes:

script = transfer.ScriptTransfer();

foreach (string s in script)
{
     //run a sqlcommand for s
}

Damit werden die Daten jedoch nicht erfasst.

Ich habe dem Benutzer jede Erlaubnis gegeben, die mir sowohl für SQL Server als auch für die Datenbank selbst einfällt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage