Timeout abgelaufen Fehler bei Verwendung des Kopierdatenbank-Assistenten

8

Microsoft hat mich zu der Überzeugung gebracht, dass der SQL Server 2012-Assistent zum Kopieren von Datenbanken die optimalste Methode zum Kopieren einer SQL Server 2000-Datenbank nach SQL Server 2012 ist. Nach einigen Stunden konnte ich einige Probleme überwinden und kleine Dateien importieren mittelgroße SQL Server 2000-Datenbanken in SQL Server 2012.

Der Assistent schlägt jedoch für eine 30-GB-Datenbank mit folgenden Fehlern ständig fehl:

Meldung: Beim Übertragen der Daten ist ein Fehler aufgetreten. Einzelheiten finden Sie in der inneren Ausnahme.
StackTrace: bei Microsoft.SqlServer.Management.Smo.Transfer.TransferData ()
bei Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer ()
InnerException -> Timeout abgelaufen. Die Zeitspanne, die vor Abschluss des Vorgangs verstrichen ist oder der Server nicht reagiert.
CREATE DATABASE fehlgeschlagen. Einige der aufgelisteten Dateinamen konnten nicht erstellt werden. Überprüfen Sie die zugehörigen Fehler.
StackTrace:
bei System.Data.SqlClient.SqlConnection.OnError (SqlException-Ausnahme, Boolean breakConnection)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning ()
at System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet massCopyHandler, TdsParserStateObject stateObj)

Ich habe doppelt geprüft, es ist kein Dateipfad, keine Berechtigung oder kein Speicherplatzproblem. Ich denke, der CREATE DATABASESchritt dauert ungefähr 2 Minuten und der Assistent geht davon aus, dass der Vorgang abgelaufen ist. Ich habe manuell eine leere Datenbank mit demselben Dateipfad und derselben Dateigröße mit SQL erstellt, die funktioniert hat. Interessanterweise schlug eine 1-GB-Datenbankkopie mit denselben Fehlern fehl und war beim zweiten Versuch erfolgreich.

Bitte helfen Sie.

Salman A.
quelle
Bitte sehen Sie Aarons Antwort. Das ist ein viel effizienterer Weg für Ihre Datenbank
Ali Razeghi

Antworten:

7

Ein viel effizienterer Weg als das Herumspielen mit diesem Assistenten wäre:

  1. Erstellen Sie eine vollständige Sicherung Ihrer 2000-Datenbank.
  2. Stellen Sie es in einer SQL 2005-, 2008- oder 2008 R2-Instanz wieder her, die alle 2000 Datenbanken unterstützen. Sie können die Evaluierungsausgabe von 2008 R2 weiterhin hier herunterladen , wenn keine zutreffenden Instanzen vorhanden sind. Beachten Sie, dass Express nicht funktioniert, da die Datendatei je nach Version auf 4 GB / 10 GB beschränkt ist.
  3. Ändern Sie die Kompatibilitätsstufe auf etwas über 80 (90 oder 100, je nachdem, ob Sie 2005 oder 2008/2008 R2 verwendet haben) ALTER DATABASE.
  4. Erstellen Sie eine vollständige Sicherung dieser Datenbank, nachdem sie sich nicht mehr im 80-Kompatibilitätsmodus befindet.
  5. Stellen Sie diese neue Sicherung in Ihrer SQL Server 2012-Instanz wieder her.
  6. Ändern Sie die Kompatibilitätsstufe auf 110 und aktualisieren Sie die Statistiken.
  7. TEST .
Aaron Bertrand
quelle
Ich habe SQL 2012 installiert. Ist es in Ordnung, wenn ich SQL 2008 R2 auf demselben Computer installiere? Ist die Reihenfolge der Installation wichtig?
Salman A
Ja, Sie können 2008 R2 auf demselben Computer installieren, aber um die Dinge einfach zu halten, installieren Sie einfach das Datenbankmodul, keine Client-Tools und all das. Sie können die 2008 R2-Instanz deinstallieren, sobald Sie alle Ihre 2000-Datenbanken von 2000 verschoben haben.
Aaron Bertrand
1
Ich würde davon abraten, Versionen zu installieren, die Sie nicht auf Produktionsmaschinen benötigen, aber nein, es stört nicht, aber Sie erhalten möglicherweise einige Warnungen zu gemeinsam genutzten Komponenten. Installieren Sie jedoch in der Regel niemals etwas auf einem Produkt, das Sie in einem Produkt nicht benötigen. Es vergrößert die Sicherheitsfläche für Angriffe, führt Fehler ein und erhöht das Management.
Ali Razeghi
1
@Ali woher weißt du, dass die Maschine, von der Salman spricht, eine Produktionsmaschine ist? Oder dass es nicht die einzige verfügbare Maschine ist?
Aaron Bertrand
Aus diesem Grund habe ich "on prod" angegeben, anstatt nur "do do it" zu tun, und geantwortet, "aber nein, es stört nicht". Soweit nur ein Computer verfügbar ist, können Sie diese sogar auf Desktops installieren, und seine Datenbank ist wie angegeben 30 GB groß. Computer mit 30 GB freiem Speicher sind ziemlich verbreitet, aber auch hier war es nur ein Ratschlag, kein schweres "Dies ist die einzige Antwort". Ich habe mir seinen Blog angesehen und er ist sehr dev-fokussiert, was bedeutet, dass es sehr wahrscheinlich ist, dass er sich nicht so sehr mit Ops Best Practices beschäftigt wie ein Ops-Typ. Ich denke, es ist ein guter Rat, ich bin überrascht, wie viele Leute in Prod arbeiten, wenn sie nicht müssen.
Ali Razeghi