2012-11-20 7 views
6

ho avuto la maggior parte del modo, ma sembra che ci sia un problema di autorizzazioni da qualche parte:Ripristino di un database in un diverso istanza di Tridion

Prima il tutto ripristino sta lavorando bene nel mio ambiente di destinazione - destinazione dispone di un accesso al server account TCMDBUser che è mappato al mio utente del database tridion_cm TCMDBUser

Il mio database di origine tridion_cm ha utente TCMDBUser_DEV.

Dopo il ripristino del file di origine .bak nel mio target TCMDBUser_DEV è orfano.

ho modificare la tabella TRUSTEES per correggere MTSUser ed i miei conti di registro di amministrazione per il mio ambiente di destinazione ed eseguire il seguente per sistemare il mio utente del database orfani:

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

posso accedere nuovamente al Tridion explorer e vedere l'elenco previsto di pubblicazioni e può camminare attraverso la struttura ad albero, ma quando vengo in una cartella che deve contenere gli elementi che vedo nulla con l'errore:

e l'errore di registro eventi corrispondente è:

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

Sei sicuro il database è stato ripristinato è la stessa versione esatta come SDL Il server Tridion CM lo stai collegando anche tu? E le impostazioni di Collation di entrambi i server del database corrispondono? –

+0

Come sei arrivato alla conclusione questo è un errore di autorizzazione? Non vedo alcun tipo di controllo di accesso in qualsiasi punto dello stack delle chiamate ... –

+2

@BartKoopman hai centrato il tuo chiodo sulla testa - Ho appena confermato che la mia istanza Tridion di origine non era un servizio completo ma il mio obiettivo è. Quando eseguo lo strumento di aggiornamento sul database e riavvio, l'errore scompare. Ispirato! Grazie e scusami per l'errore –

risposta

4

come Chris menzionato , Lascio sempre l'utente dal database e quindi assegno il TCMDBUser esistente in SQL Server ai diritti sul database ripristinato. È possibile eliminare l'utente con il seguente comando (sul database ripristinato):

EXEC sp_dropuser TCMDBUser 

Poi attraverso lo SQL Server - Sicurezza - Accessi, voi richiesta le proprietà della TCMDBUser e nel Mapping utenti Aggiungere i seguenti ruoli di database : db_datareader, db_datawriter e db_ddladmin.

Questo è quello che ho sempre fatto in passato e funziona per me, non so se è tutto necessario, ma vale la pena provare immagino

+0

Ho iniziato da zero e ho fatto quanto segue: i) ha eseguito EXEC sp_dropuser TCMDBUser_DEV contro il db ripristinato. ii) modificato i mapping utente per l'accesso esistente TCMDBUser come suggerito iii) riavviato i servizi Tridion - e il risultato è lo stesso: nessun elemento nelle cartelle quando in TCM Explorer –

+0

è possibile aggiungere ulteriori dettagli sul messaggio di errore effettivo nella domanda? controlla anche il registro eventi Tridion per quell'errore e i suoi dettagli –

+0

Mi sembra di avere un qualche tipo di accesso, come posso vedere e sfogliare tutte le pubblicazioni che mi aspetto di vedere e navigare attraverso i gruppi di strutture di cartelle. Ma quando seleziono una cartella in cui prevedo di avere articoli, vedo zero articoli. Errore nel registro eventi aggiunto all'inizio del post. –

5

È necessario eliminare/rilasciare il file TCMDBUser_DEV dal DB e quindi crearne uno nuovo con lo stesso nome e password (oppure ricollegarlo al cm DB). Questo dovrebbe risolvere il tuo problema.

Normalmente utilizzo il metodo di eliminazione con MS SQL Server. Credo che ciò si verifichi a causa dello stato di proprietà che TCMDBUser ha sullo schema del database.

Al termine l'utente TCMDBUser dovrebbe avere le seguenti autorizzazioni per il database Tridion_CM

enter image description here

+0

Mi dispiace confondermi tra utenti e login.La mia istanza SQL di destinazione ha un login TCMDBUser che voglio continuare ad utilizzare come utente per l'accesso (mantenendo le impostazioni di snap-in MMC), il mio database ripristinato ha un utente orfano TCMDBUser_DEV. Si prega di elencare i passaggi con T-SQL richiesti? –

+0

Ho aggiunto una schermata delle autorizzazioni di cui sopra che può aiutare –

+0

Grazie. sì, è così che sembra. (Sto riavviando il server anche per garantire un corretto ripple attraverso) –

2

provare a creare un nuovo utente TCMDBUser nel database ed eseguire il seguente comando

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

Vuoi dire nuovo utente contro tridion_cm o nuovo accesso? Ho ripristinato da zero e creato un nuovo utente TCMDBUser contro tridion_cm e poi ho eseguito lo script suggerito. L'accesso a Tridion Admin dà lo stesso risultato di prima. Sicuramente voglio il permesso di preserver riportato su TCMDBUser_DEV e legarlo a un utente di login (che era il mio post originale)? –

+0

Intendo l'utente ... Prova ad accedere prima con qualsiasi utente adnin .. –

+0

Ho fatto come suggerito: ho creato un nuovo utente TCMDBUser contro tridion_cm e associato al login esistente TCMDBUser. Cosa intendi per accedere prima con l'utente admin? Puoi dettagliare i passaggi richiesti da db restore in poi, per favore? –

Problemi correlati