- - PR -
ADO.NETによるアプリケーションロールDB接続
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-02-22 11:22
お世話になっています。
Windowsアプリケーションのデータベースへのアクセスにアプリケーションロールを使用して接続したいと思っています。 データベースに詳しくないこともあり四苦八苦しています。 VB6でのサンプルの説明では「コネクションを接続している間、ロールが有効になります」とあり、非接続型のADO.Netで利用するのは難しいのでしょうか? 下記のコードでアプリケーションロールを有効にすることはできるのですが、作成したストアドプロシージャを実行したところ、「ネットワークの一般エラーです。ネットワークドキュメントを確認してください。」とエラーが出てしまいます。 アプリケーションロールの権限はすべて有効にしています。 アプリケーションロールについてご存じであればアドバイスいただけないでしょうか。 よろしくお願いいたします。 ConnectionString = "data source=(local);initial catalog=DT;integrated security=SSPI;persist security info=False;"
| ||||||||
|
投稿日時: 2003-02-24 08:57
こんにちは。
>>com.CommandType = CommandType.Text com.CommandType = CommandType.StoredProcedure CommandType.Textは、SQL文ですよ | ||||||||
|
投稿日時: 2003-02-24 12:04
Jittaさん。お返事ありがとうございます。
StoredProcedureを"EXEC"で実行するにはCommandType.Textでなければいけないようです。 .StoredProcudereだと「ストアドプロシージャがみつかりません」とエラーが表示されてしまいました。 しかし、SQLServerのアプリケーションロールでの接続は接続がプールされない。コネクションをOPENのままにする必要がある。とADO.NETでの使用はよい方法でないのかもしれません データベース接続方法を再検討してみようと思います。 | ||||||||
|
投稿日時: 2003-02-24 12:24
ADO.NETの「非接続云々」とは関係ないと思います。sp_setapproleを実行した後、ストアドプロシージャを実行する前に、そのSqlConnectionをCloseしてしまっていませんか?接続を閉じてしまったら接続はできませんので。。。
当方では次のコードで正しくアプリケーションロールが適用されることを確認しました。
| ||||||||
|
投稿日時: 2003-02-24 14:38
こんにちは。
この言葉で思い出しました。別の環境ですが、SQLCommandの文字列を変更すると、接続が閉じてしまいます。同じことが起こっているとこが考えられます。 Togさんの最初のポストでのコードは、 Connection.Open() com.CommandText = "EXEC sp_setapprole 'App', 'Pass'" で、NothingBut.NETFXさんのコードは、 System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("exec sp_setapprole 'AppRole', 'password'", cn); cn.Open(); と、Openするタイミングが異なっていますよね。NothingBut.NETFXさんのようにしてみると、どうなりますか? | ||||||||
|
投稿日時: 2003-02-24 17:23
NothingBut.NETFXさん。Jittaさん。
お返事ありがとうございます。 サンプルコードとても参考になりました。 アプリケーションロールについて勘違いをしていました。 接続を閉じてしまっていました。
複数の場所で使用される小規模なクライアントーサーバーアプリケーションを作成していたので、できるだけ簡易な方法でDBアクセスを管理したいと思っていました。 複数の接続を利用するには使い方が間違でした
このことは知りませんでした。ありがとうございます。 これから気を付けけるようにします。 |
1