OSQL を介してコマンドを実行するときと、SQlConnection を使用してプログラムによるクエリを実行するときの SQL Server 2005 の動作の微妙な違いを知っている人はいますか?
OSQL を使用して対話できるリモート マシン上にデータベースを持つクライアントがあります。ただし、sqlconnection/sqlcommand を作成して同様のクエリを実行しようとすると、次のエラーが表示されます。
['SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認します (プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - サーバー/インスタンス固有の検索エラー)。
動作する OSQL コマンドは次のとおりです。
osql -S myHost\SQLEXPRESS -U sa -q "USE [TempDB] select [Endpoint] from [Service]"
これは機能しません。上記のエラーが生成されます。
SqlConnectionStringBuilder cnBldr = new SqlConnectionStringBuilder();
cnBldr.UserID = "sa";
cnBldr.Password = "PASSWORD";
cnBldr.DataSource = "myHost\\SQLEXPRESS";
cnBldr.InitialCatalog = "TempDB";
using (SqlConnection cn = new SqlConnection(cnBldr.ConnectionString))
using (SqlCommand cmd = new SqlCommand("select [Endpoint] from [Service]",cn))
{
cn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
rdr.Read();
}
どちらの場合も、同じユーザーとして実行しています (つまり、Windows ユーザーとしてログインし、cmd ウィンドウを開いて OSQL コマンドを実行するか、上記のコード フラグメントを含む Windows アプリケーションを起動します。OSQL は機能します。 、コード フラグメントは上記のエラーを生成します。どちらの場合も、データベースへのアクセスに「sa」アカウントを使用します。OSQL フラグメントは、ユーザーにパスワードの入力を求めます。
この動作に起因する可能性のある2つの違いはありますか? これは、接続数の問題によるものではないと思います。osql コマンドの実行 (動作します) とアプリケーションの実行 (エラー メッセージが生成されます) を自由に切り替えることができるからです。
ご意見ありがとうございます。
-ジョン