2

Windows Server 2003 上の IIS に問題がある (従来の ASP Web アプリケーションを使用) データベース サーバー (SQL Server 2005) は同じマシン上にあります。

レコードセットを作成し、そのアクティブ接続を次のように設定します。

Dim RS
Set RS = Server.CreateObject("ADODB.Recordset")
RS.ActiveConnection = "Provider=SQLOLEDB;Network Library=DBMSSOCN;Data Source=xxx.xxx.xxx.xxx,1433;Initial Catalog=mydatabase;User ID=myusername;Password=mypassword;"

問題は、この接続文字列を設定するとすぐに、次のエラーが発生することです。

引数の型が間違っているか、許容範囲外であるか、互いに競合しています。

この接続文字列に問題がないことはわかっています。なぜなら、開発サーバーを使用しているときに接続をリモート データベースに向けるとうまく機能するからです。

多くの接続文字列のバリエーション (connectionstrings.com から) を試しましたが、同じエラーが発生しました。

4

3 に答える 3

1

このActiveConnectionプロパティはADODB.Connection、String ではなく Object 型を取ります。接続文字列を直接割り当てることはできません。データベース接続を割り当てる必要があります。コードは次のようにする必要があります。

Set objDB = Server.CreateObject("ADODB.Connection");
objDB.Open = "Provider=SQLOLEDB;Network Library=DBMSSOCN;Data Source=xxx.xxx.xxx.xxx,1433;Initial Catalog=mydatabase;User ID=myusername;Password=mypassword;"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection = objDB

実際にはActiveConnection、この方法でプロパティを実際に使用するべきではありません。実際に使用する必要があるのは、データベース接続を不必要に開いたままにしないようにレコードセットを切断することです。

Set objDB = Server.CreateObject("ADODB.Connection");
objDB.Open = "Provider=SQLOLEDB;Network Library=DBMSSOCN;Data Source=xxx.xxx.xxx.xxx,1433;Initial Catalog=mydatabase;User ID=myusername;Password=mypassword;"

//Get a Recordset and prep it for forward only disconnected use
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.CursorLocation = adUseClient
objRS.CursorType = adOpenStatic
objRS.LockType = adLockReadOnly
objRS.Open "SELECT * FROM SOME_TABLE", objDB

//Now disconnect the recordset and dispose of the database connection
Set objRS.ActiveConnection = Nothing
objDB.Close
Set objDB = Nothing

//Now do whatever you want with the Recordset
//...
于 2009-10-21T08:25:35.737 に答える
1

@RobV - 接続オブジェクトを作成してそれをレコードセットに割り当てることは確かにオプションですが、これへのショートカットは接続文字列をレコードセットに割り当てることです - これは機能します。

実際、次のコードが最も効率的です。

Dim RS
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open <sqlstatement>, <connectionstring>

発生したエラーで何が起こったのかわかりませんが、コードを変更せずに突然停止しました!

于 2009-10-22T10:56:22.197 に答える
0

このMSDN サンプルと同様のことを試してください。

接続を個別に作成してから割り当てています。

于 2009-10-20T14:22:55.147 に答える