2

機能のアクティブ化でカスタム SharePoint タイマー ジョブを作成しようとしたときに、ログ ファイルから次のエラーが発生しました。

System.Data.SqlClient.SqlException (0x80131904):オブジェクト 'proc_putObjectTVP'、データベース 'MSSQL'、スキーマ 'dbo' に対する EXECUTE 権限が拒否されました。 System.Data.SqlClient.SqlConnection.OnError (SqlException 例外、ブール値 breakConnection、Action`1 wrapCloseInAction) で System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj、ブール値 callerHasConnectionLock、ブール値 asyncClose) で System.Data.SqlClient.TdsParser .TryRun(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、Boolean& dataReady) System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds、RunBehavior run、String resetOptionsString) at System.Data.SqlClient.Sql. .. 5c6d109c-dbc6-e02e-7ae4-010d7f559e0b

それを機能させるために、ストアド プロシージャ proc_putObjectTVP を見つけ、サイトの apppool ユーザー ID に実行権限を付与しました。希望どおりに機能しました。

私の質問は:

これは SharePoint 2013 のバグですか? これは適切な方法ですか?(実稼働環境では、サーバー管理者がそのような操作を実行することを許可していない場合があります)

4

2 に答える 2

2

SharePoint 2013 サービスに使用されるアカウントのイベント ログに同様のエラーがありました。

SQL Server インスタンス 'XXXXXXXXX' のデータベース 'XXXX_Config' で、ユーザー '名前: XXXXX\SP_Services SID: xxxxxxxxxxxxxxx ImpersonationLevel: None' の SQL データベース権限が不十分です。SQL Server からの追加のエラー情報を以下に示します。

オブジェクト 'proc_putObjectTVP'、データベース 'XXXX_Config'、スキーマ 'dbo' に対する EXECUTE 権限が拒否されました。

多くのブログ投稿をグーグルで検索すると、必要なアクセス許可をストアド プロシージャに適用するという同じアプローチが推奨されます。個人的にはこのアプローチは好きではありませんでしたが、ロールのセキュリティ保護可能なものにストアド プロシージャを追加することで必要なアクセス許可を付与するこのTechNet 投稿WSS_Content_Application_Poolsを最終的に見つけました。

SQL Server Management Studio を使用して、次の操作を行います。

  1. データベースを展開し、SharePoint_Config データベースを展開します。
  2. [セキュリティ] -> [ロール] -> [データベース ロール] を展開します。
  3. WSS_Content_Application_Pools ロールを見つけて右クリックし、[プロパティ] を選択します。
  4. [セキュリティ保護可能なもの] をクリックし、[検索] をクリックします。
  5. 次に [特定のオブジェクト] をクリックし、[OK] をクリックします。
  6. [オブジェクト タイプ] をクリックし、[ストアド プロシージャ] を選択します。[OK] をクリックします。
  7. ストアド プロシージャ 'proc_putObjectTVP' を追加し、[OK] をクリックします (実行権限が自動的に付与されない場合は、[実行] のチェックボックスをクリックして保存する必要があります)。

この方法を使用すると、WSS_Content_Application_Pools役割に追加された新しいアカウントに正しい権限が付与され、問題が再び発生するのを防ぐことができます。

于 2015-03-31T09:51:49.390 に答える
0

SPDataAccessとにかく、私の SharePoint 2013 のインストール (SQL Server 2012 に慣れるための試行錯誤でした)SharePoint_Configに対して実行するように構成されていました。proc_putObjectTVPもちろん、より多くのことが正常に開始されたので、デバッグするエラーがさらに発生しました...)

SPDataAccess( とも表記されるSP_DATA_ACCESS) は、さまざまな問題を解決するための優れたリソースやヒントを数多く提供することで、Google にとって有益な役割を果たしてきました。夜中までブログ読んでます。データベースの構成は、かなりの数の SharePoint 管理者や開発者にとって古い方法だと思いますが、特にウィザードが行うことは非常に多い (そしてほとんどない) ため、十分に説明されていません。

http://my.safaribooksonline.com/book/programming/microsoft-sharepoint/9781118655047とそのような本にアクセスするためだけに、Safari Books にサインアップしました。「SharePoint のように考える」のに役立ちますが、Google も同様に役に立ちます。(もっと、本当に。)

于 2013-07-11T00:30:00.680 に答える