2012-11-20 4 views
6

ich die meisten des Weges bekommen habe, aber es scheint irgendwo ein Berechtigungsproblem zu sein:eine Datenbank in eine andere Instanz von tridion Wiederherstellen

Vor der Wiederherstellung alles funktioniert gut in meiner Zielumgebung - Ziel hat eine Server-Login Konto TCMDBUser, das meinem tridion_cm-Datenbankbenutzer zugeordnet ist. TCMDBUser

Meine Quelldatenbank tridion_cm hat den Benutzer TCMDBUser_DEV.

Nach dem Wiederherstellen der Quelle. BAK in mein Ziel TCMDBUser_DEV ist verwaist.

bearbeite ich den Treuhändern Tabelle MTSUser und mein Admin-Log-Konten für meine Zielumgebung zu korrigieren, und führen Sie die folgende meine verwaisten Datenbankbenutzer zu beheben:

sp_change_users_login @Action='update_one', 
@UserNamePattern='TCMDBUser_DEV', 
@LoginName='TCMDBUser' 
GO 

Ich kann in zu Tridion-Explorer wieder anmelden und sehen, die erwartete Liste der Veröffentlichungen und kann durch die Baumstruktur gehen, aber wenn ich in einen Ordner kommen, die sollen Dinge, die ich sehe nichts mit Fehlern enthalten:

und dem entsprechenden Fehlerereignisprotokoll ist:

Unable to get list of SDL Tridion Content Manager items. 
DESCRIPTION 

Error Code: 
0x80040000 (-2147221504) 

Call stack: 
System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String) 
System.Data.SqlClient.SqlDataReader.GetOrdinal(String) 
System.Data.SqlClient.SqlDataReader.get_Item(String) 
Tridion.ContentManager.Data.AdoNet.DatabaseUtilities.ConvertToFieldDictionary(IDataRecord,IDictionary`2) 
Tridion.ContentManager.Data.AdoNet.IdentifiableObjectDataMapper.Read(TcmUri,IDataRecord,IDictionary`2) 
Tridion.ContentManager.Data.AdoNet.ContentManagement.OrganizationalItemDataMapper.GetListItemsPost(IDataReader,TcmUri,OrganizationalItemItemsFilterData) 
Tridion.ContentManager.Data.AdoNet.ContentManagement.OrganizationalItemDataMapper.Tridion.ContentManager.Data.ContentManagement.IOrganizationalItemDataMapper.GetListItems(TcmUri,OrganizationalItemItemsFilterData) 
Tridion.ContentManager.ContentManagement.OrganizationalItem.GetListItemsData(OrganizationalItemItemsFilter) 
Tridion.ContentManager.ContentManagement.OrganizationalItem.GetListItemsStream(OrganizationalItemItemsFilter) 
Tridion.ContentManager.BLFacade.ContentManagement.OrganizationalItemFacade.GetListItemsXml(UserContext,String,ListFilter,ListColumnFilter) 
Tridion.ContentManager.BLFacade.ContentManagement.OrganizationalItemFacade.GetListData(UserContext,String,EnumListKind,ListColumnFilter,String) 
Folder.GetListItems 
+1

Sind Sie sicher, dass die Datenbank, die Sie genau die gleiche Version wie die SDL wiederhergestellt ist Tridion CM Server verbinden Sie es auch? Und stimmen die Sortiereinstellungen beider Datenbankserver überein? –

+0

Wie sind Sie zu dem Schluss gekommen, dass es sich um einen Berechtigungsfehler handelt? Ich sehe keine Art von Zugriffskontrolle irgendwo im Call-Stack ... –

+2

@BartKoopman Sie haben den Nagel direkt auf den Kopf geschlagen - Ich habe gerade bestätigt, dass meine Quelle Tridion-Instanz nicht Service gepackt war, aber mein Ziel ist. Wenn ich das Upgrade-Tool für die Datenbank ausführen und neu starten, geht der Fehler weg. Inspiriert! Danke und Entschuldigung für den Fehler –

Antwort

4

Wie Chris erwähnt Ich lasse den Benutzer immer aus der Datenbank und weise dann dem vorhandenen TCMDBUser in SQL Server die Rechte für die wiederhergestellte Datenbank zu. Sie können die Benutzer mit dem folgenden Befehl fallen (auf der wiederhergestellten Datenbank):

EXEC sp_dropuser TCMDBUser 

dann durch die SQL Server - Sicherheit - Benutzernamen, Sie die Eigenschaften Ihrer TCMDBUser anfordern und in der Benutzerzuordnung Fügen Sie die folgenden Datenbankrollen : db_datareader, db_datawriter und db_ddladmin.

Das ist, was ich immer in der Vergangenheit getan haben und funktioniert bei mir nicht sicher, ob alle seine erforderlich, aber einen Versuch wert Ich denke,

+0

Ich begann von Grund auf neu und tat folgendes: i) führte EXEC sp_dropuser TCMDBUser_DEV gegen wiederhergestellte db. ii) bearbeitete Benutzerzuordnungen für bestehende Login TCMDBUser wie vorgeschlagen iii) Neustart Tridion-Dienste - und das Ergebnis ist das gleiche: keine Elemente in Ordnern, wenn in TCM Explorer –

+0

können Sie einige weitere Details über die tatsächliche Fehlermeldung in Ihrer Frage hinzufügen? Überprüfen Sie auch das Tridion Ereignisprotokoll für diesen Fehler und seine Details –

+0

Ich habe anscheinend eine Art von Zugriff, da ich alle Publikationen sehen und durchsuchen kann, die ich erwarte, durch Ordnerstrukturgruppen zu sehen und zu navigieren. Aber wenn ich einen Ordner auswähle, in dem ich Gegenstände haben möchte, sehe ich null Gegenstände. Fehler im Ereignisprotokoll wurde zum Anfang des Posts hinzugefügt. –

5

Sie müssen den TCMDBUser_DEV aus der DB löschen/löschen und dann einen neuen mit dem gleichen Namen und Passwort erstellen (oder ihn erneut an Ihre cm DB anhängen). Das sollte dein Problem beheben.

Normalerweise verwende ich die Löschmethode mit MS SQL Server. Ich glaube, dass dies aufgrund des Besitzstatus geschieht, den der TCMDBUser für das Datenbankschema hat.

Wenn Sie fertig sind Ihre TCMDBUser Benutzer sollten die folgenden Berechtigungen für Ihre Tridion_CM Datenbank

enter image description here

+0

Sorry verwirrt zwischen Benutzern und Anmeldungen.Meine SQL-Zielinstanz hat einen Login-TCMDBUser, den ich weiterhin als meinen Benutzer für den Zugriff verwenden möchte (unter Beibehaltung der MMC-Snap-In-Einstellungen), meine wiederhergestellte Datenbank hat einen verwaisten Benutzer TCMDBUser_DEV. Können Sie Schritte mit T-SQL auflisten? –

+0

Ich habe einen Screenshot der Berechtigungen hinzugefügt, die dazu beitragen können –

+0

Danke. Ja, so sieht es aus. (Ich starte den Server auch neu, um sicherzustellen, dass die Daten sauber sind) –

2

Probieren Sie neue Benutzer TCMDBUser in der Datenbank erstellen und führen Sie den Befehl folgende

EXEC sp_change_users_login 'Update_One', 'TCMDBUser', 'TCMDBUser' 
+0

Meinst du neuer Benutzer gegen tridion_cm oder neues Login? Ich habe von Grund auf neu erstellt und einen neuen Benutzer TCMDBUser gegen tridion_cm erstellt und dann das vorgeschlagene Skript ausgeführt. Login bei Tridion Admin gibt das gleiche Ergebnis wie zuvor. Sicher möchte ich die Erlaubnis behalten, die mit TCMDBUser_DEV übertragen wird und bindet es zu einem Anmeldungsbenutzer (der mein ursprünglicher Pfosten war)? –

+0

Ich meine der Benutzer ... Versuchen Sie, sich mit jedem adnin Benutzer zuerst .. –

+0

Ich tat wie Sie vorgeschlagen - erstellt einen neuen Benutzer TCMDBUser gegen tridion_cm und mit vorhandenen Login TCMDBUser verbunden. Was meinst du mit Benutzer zuerst anmelden? Können Sie die erforderlichen Schritte von der Wiederherstellung der Datenbank aus detailliert beschreiben? –