6

私はほとんどの方法を手に入れましたが、どこかに権限の問題があるようです:

復元する前に、ターゲット環境ですべてが正常に機能しています-ターゲットには、tridion_cmデータベースユーザーTCMDBUserにマップされているサーバーログインアカウント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,String,EnumListKind,ListColumnFilter,String)
Folder.GetListItems
4

3 に答える 3

5

TCMDBUser_DEVをDBから削除/削除してから、同じ名前とパスワードで新しいTCMDBUser_DEVを作成する(またはcm DBに再接続する)必要があります。それはあなたの問題を解決するはずです。

私は通常、MSSQLサーバーでdeleteメソッドを使用します。これは、TCMDBUserがデータベーススキーマに対して持っている所有権ステータスが原因で発生すると思います。

完了すると、TCMDBUserユーザーは、Tridion_CMデータベースに対して次の権限を持っている必要があります

ここに画像の説明を入力してください

于 2012-11-21T00:16:17.217 に答える
4

クリスが述べたように、私は常にユーザーをデータベースから削除してから、SQLServerの既存のTCMDBUserに復元されたデータベースへの権限を割り当てます。(復元されたデータベースで)次のコマンドを使用してユーザーを削除できます。

EXEC sp_dropuser TCMDBUser

次に、SQL Server-セキュリティ-ログインを介して、TCMDBUserのプロパティを要求し、ユーザーマッピングで次のデータベースロールを追加します:db_datareader、、。db_datawriterdb_ddladmin

それは私が過去にいつもやってきたことであり、私のために働いています、それがすべて必要かどうかはわかりませんが、試してみる価値はあります

于 2012-11-21T11:03:00.513 に答える
2

データベースに新しいユーザーTCMDBUserを作成して、次のコマンドを実行してみてください

EXEC sp_change_users_login 'Update_One', 'TCMDBUser', 'TCMDBUser'
于 2012-11-21T05:45:04.873 に答える