it-swarm.com.de

"Der Job ist fehlgeschlagen" beim Kopieren der Datenbank SQL Server 2012

Ich versuche eine Datenbank zu kopieren. Beim Durchlaufen des Assistenten zum Kopieren von Datenbanken erhalte ich einen Fehler beim Ausführen eines SQL Server-Agentenauftrags. Der Fehlerzustand 

Der Job ist fehlgeschlagen. Überprüfen Sie das Ereignisprotokoll auf dem Zielserver auf Details

Vorgang wird ausgeführt

  • Protokoll für Paket hinzufügen (Erfolg)

  • Task zum Übertragen von Datenbankobjekten hinzufügen (Erfolg)

  • Paket erstellen (Erfolg)

  • SQL Server-Agent-Auftrag starten (Erfolg)

  • SQL Server-Agent-Auftrag ausführen (Fehler)

Error:

Der Job ist fehlgeschlagen. Überprüfen Sie das Ereignisprotokoll auf dem Zielserver auf Details. (Assistent zum Kopieren von Datenbanken)

Ich kann anscheinend nicht finden, was dieses Problem verursacht. Benutze ich den richtigen Ansatz? Ich muss nur diese Datenbank kopieren. Danke im Voraus.

15
mohammad_hasan

wenn Sie versuchen, Ihre Datenbank auf demselben Server zu klonen, versuchen Sie Folgendes:

  1. Erstellen Sie eine Sicherung der Datenbank, die Sie kopieren möchten
  2. klicken Sie mit der rechten Maustaste auf Databases und wählen Sie Restore Database aus.
  3. Wählen Sie die Datenbank, die Sie kopieren möchten, aus der Dropdown-Liste From Database Im Abschnitt Source for restore aus
  4. Geben Sie den Namen der neuen Datenbank in das Feld To database im Abschnitt Destination for Restore ein. Dies kann nicht der Name einer vorhandenen -Datenbank sein.
  5. OK klicken
15
safi

Überprüfen Sie das Windows-Ereignisprotokoll. 

  1. Ereignisanzeige
  2. Windows-Protokolle
  3. Anwendung
  4. Suchen Sie nach einer Warnung/Fehlermeldung, die mit einer der folgenden Optionen verbunden ist:
    • SQLAgent
    • SQLISPackage
  5. Lesen Sie den Fehler.

Hier ist ein Beispiel.

SQLAgent Related Errror

Hier sind einige der Fehler und Lösungen, die uns begegnet sind.

Kann nicht feststellen, ob der Eigentümer (...) des Jobs ... Serverzugriff hat (Grund: Informationen über Windows NT-Gruppe/Benutzer '...', Fehlercode 0x54b konnten nicht abgerufen werden. [SQLSTATE 42000] (Fehler 15404). ).

Wir mussten sicherstellen, dass während des Assistenten zum Kopieren von Datenbanken das Konto, mit dem wir uns beim Zielserver angemeldet haben, über die entsprechenden Berechtigungen verfügt und dass diese Berechtigungen verfügbar sind (wir haben schließlich das Konto sa verwendet.) Dadurch wurde die obige Warnung behoben. 

Zugriff wird verweigert

Wir mussten sicherstellen, dass der lokale SQL Server-Agent über die entsprechenden Berechtigungen auf dem lokalen Server verfügt. Daher haben wir den SQL Server-Agenten als lokales System angemeldet. Das hat funktioniert, weil Local System ein Sysadmin in unserer SQL Server-Instanz ist.

Metadaten konnten nicht gelesen werden, möglicherweise aufgrund unzureichender Zugriffsrechte.

Wir mussten dem lokalen Systemkonto weitere Berechtigungen erteilen.

  • Von SSMS
  • Klicken Sie mit der rechten Maustaste auf den Servernamen und klicken Sie auf Eigenschaften
  • Klicken Sie auf die Registerkarte Berechtigungen
  • Klicken Sie auf den Benutzer Lokales System
  • Auf den expliziten Berechtigungen ist fast ganz unten "View Any Definition" zu sehen. Sehen Sie, ob das funktioniert.

xp_regread () hat Fehler 5 zurückgegeben, 'Zugriff verweigert'.

Dies hat uns gehemmt und wir haben eine andere Frage gestellt: xp_regread () hat Fehler 5 zurückgegeben: 'Zugriff verweigert'.

9
Shaun Luttin

Normalerweise, weil Ihr Konto (NT-Dienst\SQLSERVERAGENT ) keine Berechtigung für den Datenordner (.. Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA) besitzt. Stellen Sie es auf volle Kontrolle, ist in Ordnung

Das obige Konto ist standardmäßig. Wenn Sie prüfen möchten, in welchem ​​Konto der Agent ausgeführt wird, wechseln Sie zu services.msc. Überprüfen Sie die Kontoanmeldung

6
Grey Wolf

Für mein Problem mit dem Assistenten zum Kopieren von Datenbanken: Fehler: Der Wert kann nicht null sein. Parametername: Datenbank StackTrace: at Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.CheckLocalandDestinationStatus

Ich hatte alles versucht, um zu versuchen, dass mein Assistent zum Kopieren von Datenbanken einen Zeitplan von SQL 2012 bis SQL2017 .__ durchläuft. 1. Ich hatte das SQL Agent-Konto einem Administrator zugewiesen, obwohl ich bereits einen Proxy eingerichtet hatte, der ein Sysadmin war 2. Ich war in Daten-Tools gegangen und habe versucht, die maximalen Fehler auf mehr als einen zu ändern.

Die letzten Schritte, die ich unternommen habe, waren folgende: A. Ich habe auf dem Server 2017 Datentools installiert (nur für den Fall, dass ich sie brauchte) B. Ich habe eine Dummy-Datenbank auf dem 2017-Server hinzugefügt, damit ich den Assistenten zum Kopieren von Datenbanken aus SSMS heraus aufrufen kann. Ich habe den opy-Datenbankassistenten aus meinem NEWER-System von der Dummy-Datenbank aus gestartet, aber meine Quelle in den Quellserver geändert (anstelle des Standardwerts der lokalen SQL-Instanz) und mein Ziel in meine lokale SQL-Instanz von SQL Server.

D. Ich habe den Assistenten für jedes Element durchgearbeitet (für meinen Fall war es eine Option zum Kopieren und Ersetzen, wobei SSMS verwendet wurde (nicht getrennt und erneut angefügt, da ich die Quelle nicht in der Produktion herunterfahren konnte) und ich auf REFRESH (Aktivieren) geklickt habe Nach dem Ändern des Zielverzeichnisses wird für jeden Datenbankkopierassistenten ein Bildschirm angezeigt.

(EIN KAVIAT BEI MIGRATION VON DATENBANKEN AUF SSMS 2017 für SQL 2017. Stellen Sie sicher, dass Sie das neueste kumulative Update für die SQL-Version installiert haben: https://support.Microsoft.com/de-de/help/4342123 vs. select @@ version in einer abfrage

Stellen Sie außerdem sicher, dass Ihre SQL Agent- und SQL Server-Konten über die Berechtigung für das Zielverzeichnis verfügen.

Danach funktionierte mein Skript schließlich vom SQL2017-Server und wurde zu SQL Agent-Jobs hinzugefügt

1
Chip

Für mich habe ich eine Datenbank auf meinen lokalen Host kopiert.

  1. Ich habe den Agentendienst so geändert, dass er als ich selbst ausgeführt wird.
  2. Auf meinem lokalen Host wurde eine fehlende Rolle hinzugefügt, da im Ereignisprotokoll die Meldung "Die Serverrolle 'Entwickler' kann nicht geändert werden, da sie nicht vorhanden ist oder Sie keine Berechtigung haben" angezeigt wurde.
  3. sah diese "InnerException -> Die Prozedur 'sys.sp_procoption' kann nicht innerhalb einer Transaktion ausgeführt werden." Daher habe ich die Assistenteneinstellung so geändert, dass gespeicherte Prozeduren nicht kopiert werden.
  4. Der nächste Fehler war "Die Eigenschaft HasMemoryOptimizedObjects ist für die Datenbank '[TCCPortal_UAT]' nicht verfügbar. Diese Eigenschaft ist möglicherweise für dieses Objekt nicht vorhanden oder kann aufgrund unzureichender Zugriffsrechte nicht abgerufen werden", was ich selbst nicht schnell und einfach beheben konnte.

Zu diesem Zeitpunkt habe ich aufgegeben und den SQL Server-Import- und -Export-Assistenten verwendet, der für meine Anforderungen anscheinend in Ordnung zu funktionieren schien. https://docs.Microsoft.com/de-de/sql/integration-services/import-export-data/import-and-export-data-with-the-sql-server-import-and- Export-Assistent? view = sql-server-2017

Beachten Sie, dass die Verwendung des Import- und Export-Assistenten mit den Tabellen hervorragend funktioniert. Ich musste die Ansichten, gespeicherten Prozeduren und Funktionen separat kopieren, indem ich mit der rechten Maustaste auf Datenbank-> Aufgaben-> Skripte generierte. Der Assistent führt Sie dann durch die Objekte, die Sie auswählen können.

Viel Glück, ich hoffe das hilft jemandem.

1
James Burnett