2

同じサーバーで ASP.NET SOAP Web サービスを呼び出す .NET3.5 Windows フォーム アプリケーションがあります。次に、この Web サービスはデータを同じサーバー上の SQL Server Express 2005 データベースに保存します。

このアプリケーションは、社内だけでなく多くのお客様にも展開されており、18 か月以上にわたって期待どおりに機能しています。しかし今週、私たちの主要な顧客のサイトで、アプリケーションがデプロイされている 10 台のサーバーのうち 4 台でエラー メッセージが生成され始めました。Web サービス メソッドはすべて同じ接続文字列を使用しますが、影響を受ける Web メソッドは 1 つだけです。

接続文字列の形式は次のとおりです。

Data Source=MYSERVER\SQLEXPRESS;Initial Catalog=MyDatabase;
Persist Security Info=True;User ID=MyUser;Password=MyPassword

アプリケーションが特定の Web サービス メソッドを呼び出すと、エラーが発生します。

ユーザー 'MyDatabase' が見つかりません。ユーザーが存在しないか、権限がないためです。

これを引き起こすアプリケーションへの変更はありませんが、顧客の IT 担当者がこれらのサーバーに変更を加えた可能性があります。MyUserストアド プロシージャに対するアクセス許可が付与されており、他のすべての Web サービス インターフェイスに接続できます。

私を混乱させている主なことは、存在しないユーザーが接続文字列MyDatabaseInitial Catalog名前であるというエラーメッセージが表示されることです。

私は顧客と一緒に現場に行き、アプリケーションがまだ正しくセットアップされていること、および他のすべての Web サービス インターフェイスがデータベースに正しく接続されていることを確認しました。

考えられる原因または私が確認できるその他の提案は、ありがたく受け取られます。

4

1 に答える 1

1

dbo を削除しないことを強くお勧めします。それがスキーマ名です。単純に削除すると、DB がデフォルトのスキーマを使用することになりますが、これはおそらく dbo です。したがって、それは何も達成しません。ただし、プロシージャを呼び出すときにスキーマ名を使用しないと、名前の競合が発生する可能性があります。たとえば、DB 内の 2 つの異なるスキーマに同じ名前のプロシージャがあり、スキーマ名なしでそれを呼び出そうとすると、DB はどちらを呼び出すべきかを認識できず、例外が発生します。

于 2012-11-16T11:43:07.190 に答える