0

SQL Server 2005 で実行されているクエリからクラシック ASP に varbinary 出力値を取得しようとしています。ASP の実行は、単純に varbinary 出力を文字列に取り込んでいるコードの一部になると失敗します。ですから、別の方法で処理する必要があると思います。

実際、データベース接続のアプリケーション ロールを設定 (sp_setapprole) および設定解除 (sp_unsetapprole) しようとしています。最初に approle を設定し、次に必要なクエリを実行して、最後に approle の設定を解除しました。設定解除中は、'exec sp_unsetapprole @cookie' のようなクエリを作成できるように、ASP コードで Cookie (varbinary) 値が必要なときです。この段階では、Cookie (varbinary) の値はありません。

私がこれを行っている理由は、アプリの役割を設定しようとしたときに「sp_setapprole が正しく呼び出されませんでした」というエラーを取得していたためです。'OLE DB Services = -2;Pooling=False' を接続文字列に追加して、プールを無効にしました。

プーリングがパフォーマンスの面で役立つことは知っていますが、ここで大きな問題に直面しています。

従来の ASP ファイルに varbinary 値を取得するか、アプリの役割を設定および設定解除する方法を提案してください。いずれにせよ、解決策は高く評価されます。

ありがとう、ナンダゴパル

4

2 に答える 2

0

最も簡単な方法は、sp_setapproleのvarbinary値をADOレコードセットに格納し、実際のタイプを気にせずにその値を保持することです(ただし、値はバイトの配列に格納できるはずです)。

次に、そのvarbinary値を最終的なsp_setapproleに配置する必要がある場合は、単にレコードセット値を使用できます。これを行うには、ADODB.Commandオブジェクトを使用してsp_setapproleを呼び出します。

'--untested, syntax could be slightly off'
Set myCommand = Server.CreateObject("ADODB.Command")
With myCommand
    .ActiveConnection = myConnection
    .CommandType = adCmdStoredProc
    .CommandText = "sp_unsetapprole"
    .Parameters.Append _
        .CreateParameter("@Cookie", adLongVarBinary, adParamInput, fileSize)
    .Parameters(str_ParamName).Attributes = adFldLong
    .Parameters(str_ParamName).AppendChunk myRecordset.Fields("Cookie").Value
    .Execute
End With

おそらく、このStackoverflowの質問からいくつかの洞察を得ることができます。

于 2010-03-28T12:00:09.733 に答える
0

VARBINARY データ型を IMAGE にキャストしてみてください。これは、「クラシック」ASP で使用できるほど古いものです。ちょっとした考え。間違っている可能性があります。

于 2010-03-28T11:28:11.827 に答える