1

以下は正常に実行されます。

EXEC sys.xp_readerrorlog 0

ただし、これは行いません。

SELECT * 
FROM OPENROWSET(
    'SQLNCLI', 
    'Server=.;Trusted_Connection=Yes;',
    'EXEC sys.xp_readerrorlog 0')

Windowsアカウントを使用してログインしsysadmin、システムデータベースを含むローカルサーバー上のすべてのデータベースに対するアクセス許可を持っています。

エラーメッセージは次のとおりです。

メッセージ7357、レベル16、状態2、行11
オブジェクト「EXECsys.xp_readerrorlog0」を処理できません。リンクサーバー"(null)"のOLEDBプロバイダー"SQLNCLI10"は、オブジェクトに列がないか、現在のユーザーにそのオブジェクトに対するアクセス許可がないことを示します。

C:\Windows\ServiceProfiles\LocalService\AppData一時ファイルの作成に問題があった場合に備えて、フォルダーのアクセス許可を確認しましOPENROWSETたが、ローカル管理者(私はグループに属しています)が完全に制御できます。

なぜこのエラーが発生するのですか?どうすれば回避できますか?

4

1 に答える 1

3

これを試して:

SELECT * 
FROM OPENROWSET(
    'SQLNCLI', 
    'Server=.;Trusted_Connection=Yes;',
    'SET FMTONLY OFF;EXEC sys.xp_readerrorlog 0')

基本的には、プロシージャを実行する前に結果の形状を推測しようとしています。

その設定オプションを使用することは、これが可能な唯一の方法がプロシージャを実行することであることを意味します。

于 2013-03-04T15:35:20.113 に答える