将数据库还原到tridion的其他实例

我有大部分的方式,但似乎有一个权限问题:

在恢复之前,一切都在我的目标环境中正常工作 – 目标有一个服务器登录帐户TCMDBUser,它映射到我的tridion_cm数据库用户TCMDBUser

我的源tridion_cm数据库用户TCMDBUser_DEV.

将源.bak恢复到我的目标TCMDBUser_DEV后是孤立的.

我编辑TRUSTEES表以更正我的目标环境的MTSUser和管理员日志帐户,并运行以下命令来修复我的孤立数据库用户

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

我可以重新登录Tridion资源管理器并查看预期的发布列表,并可以浏览树结构但是当我来到一个应该包含项目的文件夹时,我看不到任何错误

和相应的事件日志错误是:

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,EnumListKind,ListColumnFilter,String)
Folder.GetListItems

解决方法

像Chris提到的那样,我总是从数据库删除用户,然后在sql Server中为现有的TCMDBUser分配对已恢复数据库的权限.您可以使用以下命令(在还原的数据库上)删除用户
EXEC sp_dropuser TCMDBUser

然后通过sql Server – Security – Logins,您可以请求TCMDBUser的属性,并在User Mapping中添加以下数据库角色:db_datareader,db_datawriter和db_ddladmin.

这就是我过去一直在做的并且对我有用,不确定是否都需要,但值得一试我猜

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...