2

VBScript 内で SQL サーバーへの接続を設定しようとしています。

SQL サーバーに接続すると、Web ページに「URL の処理中に問題が発生しました」というエラーが表示され、管理者に連絡するよう求められます。

他のすべてのページで機能するため、接続文字列が正しいことはわかっています。

SQL接続をセットアップするためにこれまでに使用しているコードは次のとおりです

Const SQL_Connection_String = "Provider=sqloledb;SERVER=SQLPROD;DATABASE=MyDataBase;UID=MyUsername;PWD=MyPassword;"
    Set SQLConnection = CreateObject("ADODB.Connection")
    SQLConnection.provider = "ADODB.Connection"
    Set SQLConnectionRecordSet = CreateObject("ADODB.Recordset")

私が知っていることから、これは VBscript で接続を設定する有効な方法であるはずです。これらの接続の構成に関する適切なドキュメントは実際には見つかりませんでした。

私が知りたいのは、接続を正しく設定していますか?これをトラブルシューティングするために使用できる戦略はありますか? つまり、接続が成功した場合に true または false を返す print ステートメントを使用できるようにしたいと考えています。また、リーダーの内容を印刷して、データベースから読み取ったかどうか、読みたいものを読み取ったかどうかを確認したいと思います。

助けてくれてありがとう。VBscript と ASP.net を初めて使用するので、詳細がわかりません。

4

2 に答える 2

2

君の

SQLConnection.provider = "ADODB.Connection"

は間違いなく間違っています。接続文字列でプロバイダーを指定すると、その行を削除するとスクリプトが「機能」する可能性が (わずかに) あります。

アップデート

(1) データベースへの接続に問題がある場合は、この優れたソースを使用して理論とサンプルを開始し、空のファイル (constr.udl など) を作成して起動し、GUI を使用して接続を指定/テストします。ダイアログを終了すると、接続文字列がファイルに保存されます。そこから適切な (Unicode 対応の) エディターを使用して取得できます。 .udl ファイルの使用

(2) ASP ページにエラーが多すぎる場合は、(簡略化された) データベース コードをコマンドライン .vbs スクリプトに抽出します。そうすれば、1 つの敵に集中することができます (そして、確実な場合は 2 番目の敵に対処できます。SELECT は目的のデータを返します)。

(3) 特定の SQL ステートメント/機能/式に問題がある場合は、ドキュメントを調べてください。この場合、お気に入りの SQL ブックを参照するか、Google をフォローして(馬によると) いいね! してください。JOINも候補になるかもしれません。次に、(2) を使用して簡単なステートメントから始め、一見退屈に思えることをマスターしてから、より複雑なステートメントに進みます。(「Table2.Date LIKE '2011'」は、Date 列のタイプと内容に応じて機能する場合と機能しない場合があります (Date は予約/キーワードではありませんか?)

(デレクは別の質問への回答を必ず読むでしょうが、ここから始める他の人もおそらくこれを読むことで利益を得るでしょう。)

于 2012-06-19T16:58:18.647 に答える
1

ADO をスクリプト化するためのサンプル コードを次に示します。

Set SQLConnection = CreateObject("ADODB.Connection")
SQLConnection.Open ConnectionString

Set rs = CreateObject("ADODB.RecordSet")
rs.Open "SELECT SYSTEM_USER AS Username, session_id, auth_scheme, net_transport, client_net_address FROM sys.dm_exec_connections WHERE (@@SPID = session_id)", SQLConnection 

' Loop through each record until there are no more
While NOT rs.EOF
    ' Loop through each field
    For Each field In rs.Fields
        output.Write field.Value & " "
    next

    rs.MoveNext
    output.WriteLine
Wend
于 2012-06-19T23:14:03.287 に答える