ネットからの答えを調べてみたが役に立たなかったという非常に奇妙な状況があります。SQL Server2008R2を使用しています。
TRUNCATE TABLE
他のT-SQLステートメントの中でステートメントを含むストアドプロシージャを作成しました 。
これをSQLServerManagement Studioから実行すると、ストアドプロシージャはエラーなしで実行されます。
Windowsフォームアプリケーション(.NET Framework 4を使用してVB.Netで記述されている)から実行すると、エラーが発生します
オブジェクトtbl_Test1が存在しないか、権限がないため、オブジェクトが見つかりません
データベースへの接続はアプリケーション内で正しく設定されています。さらに奇妙なのは、他のストアドプロシージャをまったく同じ方法で作成し、独自のTRUNCATE TABLE
ステートメントを使用して、エラーなしで実行できることです。
User_Role
呼び出し側アプリケーションがとしてログオンしている、へのストアドプロシージャに実行権限があります。
テーブルtbl_Test1
は存在します。
私はいくつかのことを試みましたが、これを行うことで、この状況全体についてさらに混乱するようになりました。
Select * from tbl_Test1
の前にを付けるとTRUNCATE
、ストアドプロシージャが機能します。後でselectを返すので、これが存在しないことを望みます。だから私はステートメントの
select @Count = count(*) from tbl_Test1
前に再コーディングして実行しました、そしてこれは存在しないか許可がないことTRUNCATE
を示す上記の同じエラーで失敗します。tbl_Test1
なぜこれが起こるのか、私は完全に途方に暮れています。これとまったく同じ方法で作成された、切り捨てステートメントを含む他のいくつかのストアドプロシージャがあり、アプリケーションから呼び出されたときに正常に機能します。
誰かが私の問題を助けたり、光を当てたりできますか?
よろしくお願いします