あなたまたは他の誰かがマスターに対するあなたの権利を変更していないことを確認してください。何かを追加するために、そのテーブルにレコードが追加されます。
補遺:
次のスクリプトを実行して、誰がどの権限を持っているか、およびそれらが暗黙的か明示的かを判断できます。
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 ログに認証エラーが報告されていないことを確認してください。これらも、接続の問題の可能性を示しています。