2011-06-13 5 views
0

SQlConnectionを使用したプログラムクエリとOSQLによるコマンド実行時のSQL Server 2005の動作の微妙な違いは誰にも分かりますか?osqlとsqlcommandを使用した場合のSQLServer 2005の動作上の相違

OSQLを使用して対話することができるリモートマシン上にデータベースを持つクライアントがあります。しかし、sqlconnection/sqlcommandをビルドして同様のクエリを試みると、私はエラーが表示されます。上記のエラーが生成され、

osql -S myHost\SQLEXPRESS -U sa -q "USE [TempDB] select [Endpoint] from [Service]" 

をこれは動作しません。ここで

['A network-related or instance-specific error occurred while establishing a connection to the SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that the SQL Server is configured to allow remote connections (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specific).

作品OSQLコマンドです。どちらの場合も

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ユーザーとしてログインし、Iのいずれかに、cmdウィンドウを開き、OSQLコマンドを実行するか、私はコードが含まれているWindowsアプリケーションを起動しますOSQLフラグメントは上記のエラーを生成しますが、どちらのケースもデータベースにアクセスするために 'sa'アカウントを使用します。この2つはこの動作に帰結する可能性がありますか?これは、接続の数に問題があるとは思わないが、osqlコマンド(これはうまくいく)とアプリケーションの実行を自由に切り替えることができる(エラーメッセージを生成します)。

ありがとうございました。 TempDBを使用していない

+0

同じマシンを使用していますか? – gbn

答えて

2

まず-John

は、名前はtempdbであり、あなたのコードでは、大文字と小文字が区別インスタンスで解除されます。

接続の問題については、SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specifiedの手順を実行してください。 OSQLはODBCを使用し、SQLCommandには管理されたSNI実装が組み込まれているため、それらの間に違いがあり、異なるマシンのグローバル構成設定の影響を受けます。リンクされた記事の手順に従って、接続がどこで切断されるかを特定します。

+0

こんにちは、私は両方の基地で同じマシンで走っていました。 TempDBは、実際のデータベースの名前を削除する単なる注釈に過ぎませんでした。混乱させて申し訳ありません;私はそれをfooDBと呼ぶべきだった。 –

+0

また、より多くのsqlcmd(vs osql)を使用すると、同じ動作が観察されます(例:sqlcmd -S myHost \ SQLExpress -U sa -q "USE [tempDB] select [Endpoint] from [Service]"も生成されます適切な出力。 –

+0

接続しようとしているアプリケーションでエラーが発生しましたか?ERRORLOG?ファイルをチェックするか、EventVwr.exeを使用してください。 –

0

2つのメカニズムに違いはありません。アプリケーションはわずかに異なる方法で起動されました。この違い(具体的には、クエリが生成される前の名前解決)は、エラーメッセージにつながったものでした。

osql/sqlcmdとこの観点からのプログラムによるクエリには、固有の相違点はありません。