2011-01-31 17 views
0

私はIIS上でWindows認証を有効にして、いくつかのデータベース更新スクリプトを実行しようとすると、私は奇妙なエラーを取得しています:Windowsの認証とIIS上のSQL ServerのSMO

偽装の無効なトークンを - それは が重複することはできません。

明示的ななりすましを有効にしていません。

通常のSqlClientに変更してExecuteNonQueryを使用するとSMOと何か関係がありますが、問題はなくなりました。これは残念なことに、更新スクリプトが標準SqlClientによって認識されない「GO」キーワードを含むことができなければならないため、長期的な解決策ではありません。

+0

"GO"ステートメントで入力を解析し、そのステートメントをSQLステートメントを実行するためのインジケータとして使用して、さらに多くのSQL行に進むことができます。そのようにすれば、標準のSqlClientクラスを使用できます。 –

+0

これは非常に重要なコードですが、できるだけシンプルにしておきたいと思っています。 – Richard

+0

パーサがテキスト文字列を適切に処理していることを確かめなければなりません。私たちは更新ヘルプ設定値= "... GO .."のようなものを持っていると確信しています。 – Richard

答えて

0

IISワーカープロセスが一部のユーザーとして実行されています。 Windows認証を使用すると、暗黙的にそのユーザーになりすましが行われます。

SQLサーバーが別のホストにある場合は、これでは不十分です。私が思う偽装されたユーザーは、ローカルのリソースにしかアクセスできません。

http://msdn.microsoft.com/en-us/library/ff647405.aspx#paght000025_usingimpersonation

Windows認証を使用してSQL Serverのですか?

+0

現在のところ、私たちはボットSQL ServerとWindows認証をサポートしたいと思っています。 – Richard

+0

SMOと通常のSqlClientの違いについてはまだ説明していませんが、次に試してみるべきことを教えてください。 – Richard

関連する問題