3

この問題は、Visual Studio/SQL Server の設定に変更を加えることなく、数日前に PC に発生しました。

Visual Studio でデータベース ファイル (*.mdf) に対して手動操作を実行しようとすると、次のエラーが発生します。

指定されたプロシージャが見つかりませんでした。(HRESULT からの例外: 0x8007007F)

(たとえば、新しいテーブルを作成しようとするとき、または既存のテーブルのデータを表示するとき)

このエラーを修正するにはどうすればよいですか?

4

4 に答える 4

1

あなたまたは他の誰かがマスターに対するあなたの権利を変更していないことを確認してください。何かを追加するために、そのテーブルにレコードが追加されます。

補遺: 次のスクリプトを実行して、誰がどの権限を持っているか、およびそれらが暗黙的か明示的かを判断できます。

WITH perms_cte as
(
    select USER_NAME(p.grantee_principal_id) AS principal_name,
            dp.principal_id,
            dp.type_desc AS principal_type_desc,
            p.class_desc,
            OBJECT_NAME(p.major_id) AS object_name,
            p.permission_name,
            p.state_desc AS permission_state_desc
    from    sys.database_permissions p
    inner   JOIN sys.database_principals dp
    on     p.grantee_principal_id = dp.principal_id
)
--users
SELECT p.principal_name,  p.principal_type_desc, p.class_desc, p.[object_name], p.permission_name, p.permission_state_desc, cast(NULL as sysname) as role_name
FROM    perms_cte p
WHERE   principal_type_desc <> 'DATABASE_ROLE'
UNION
--role members
SELECT rm.member_principal_name, rm.principal_type_desc, p.class_desc, p.object_name, p.permission_name, p.permission_state_desc,rm.role_name
FROM    perms_cte p
right outer JOIN (
  select role_principal_id, dp.type_desc as principal_type_desc, member_principal_id,user_name(member_principal_id) as member_principal_name,user_name(role_principal_id) as role_name--,*
from    sys.database_role_members rm
INNER   JOIN sys.database_principals dp
ON     rm.member_principal_id = dp.principal_id
) rm
ON     rm.role_principal_id = p.principal_id
order by 1
--- thanks to Jamie Thomson for this ditty 

さらにいくつかの提案;

プロファイラーを使用して呼び出しを追跡し、自分が思っているユーザーとして接続していることを確認します - sp_who2 はそれを確認する別の方法かもしれません。

プロセスが正しいデータベースにあることを確認します。c# 接続を使用して SELECT DB_NAME() を実行します - 確認のために読める場所に結果を書き込んでください。

これがある環境では機能するが別の環境では機能しない場合、接続文字列が強く疑われます。

SQL ログに認証エラーが報告されていないことを確認してください。これらも、接続の問題の可能性を示しています。

于 2013-06-22T17:52:16.103 に答える
0

Visual Studio を管理者として実行してみる

Visual Studio を右クリック --> 管理者として実行。

于 2013-06-22T08:39:07.797 に答える
0

SQL Server Management Studio でデータベースへの接続を試みます。これにより、データベースのアクセス許可の問題であるか、他の問題であるかを少なくとも絞り込むことができます。また、データベースが存在し、アクセス権限があることを確認してください。(ジョーが提案したように。)

それがチェックアウトすると仮定すると...私のグーグルは、非常によく似た問題を抱えている人を見つけました。彼は、Adel が提案した runas 管理者のことはうまくいったと言いましたが、VS が Web アプリケーション プロジェクト ファイルで指定された IIS 仮想サーバーを見つけることができないなど、エラー メッセージを引き起こす可能性のある他の問題があった (アクセス許可? 名前が変更されましたか?) . ファイルが存在し、そのファイルにアクセスする権限があることを確認してください。

http://connect.microsoft.com/VisualStudio/feedback/details/317124/system-runtime-interopservices-comexception-in-webapplication-project

于 2013-06-28T18:42:18.833 に答える