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

Ton*_*ead 6 tridion tridion-2011

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

在恢复之前,一切都在我的目标环境中正常工作 - 目标有一个服务器登录帐户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
Run Code Online (Sandbox Code Playgroud)

我可以重新登录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,String,EnumListKind,ListColumnFilter,String)
Folder.GetListItems
Run Code Online (Sandbox Code Playgroud)

Chr*_*ers 5

您需要从DB中删除/删除TCMDBUser_DEV,然后使用相同的名称和密码创建一个新的TCMDBUser_DEV(或将其重新连接到您的cm DB).这应该可以解决你的问题.

我通常使用MS SQL服务器的删除方法.我相信这是由于TCMDBUser在数据库Schema上拥有的所有权状态而发生的.

完成后,您的TCMDBUser用户应对Tridion_CM数据库拥有以下权限

在此输入图像描述


Bar*_*man 4

正如 Chris 提到的,我总是从数据库中删除该用户,然后为 SQL Server 中现有的 TCMDBUser 分配恢复数据库的权限。您可以使用以下命令删除用户(在恢复的数据库上):

EXEC sp_dropuser TCMDBUser
Run Code Online (Sandbox Code Playgroud)

然后通过 SQL Server - 安全 - 登录,请求 TCMDBUser 的属性,并在用户映射中添加以下数据库角色:db_datareaderdb_datawriterdb_ddladmin

这就是我过去一直做的事情,对我有用,不确定是否全部需要,但我想值得一试